Commit b6e99eb4 authored by Richard Gibson's avatar Richard Gibson

Core: Work around loss of precision from parseFloat

Fixes #15100
parent 6cb17c8e
...@@ -216,7 +216,8 @@ jQuery.extend({ ...@@ -216,7 +216,8 @@ jQuery.extend({
// parseFloat NaNs numeric-cast false positives (null|true|false|"") // parseFloat NaNs numeric-cast false positives (null|true|false|"")
// ...but misinterprets leading-number strings, particularly hex literals ("0x...") // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
// subtraction forces infinities to NaN // subtraction forces infinities to NaN
return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; // adding 1 corrects loss of precision from parseFloat (#15100)
return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
}, },
isEmptyObject: function( obj ) { isEmptyObject: function( obj ) {
......
...@@ -462,7 +462,7 @@ test("isFunction", function() { ...@@ -462,7 +462,7 @@ test("isFunction", function() {
}); });
test( "isNumeric", function() { test( "isNumeric", function() {
expect( 37 ); expect( 38 );
var t = jQuery.isNumeric, var t = jQuery.isNumeric,
Traditionalists = /** @constructor */ function(n) { Traditionalists = /** @constructor */ function(n) {
...@@ -490,6 +490,7 @@ test( "isNumeric", function() { ...@@ -490,6 +490,7 @@ test( "isNumeric", function() {
ok( t("4.536"), "Positive floating point string"); ok( t("4.536"), "Positive floating point string");
ok( t(-2.6), "Negative floating point number"); ok( t(-2.6), "Negative floating point number");
ok( t(3.1415), "Positive floating point number"); ok( t(3.1415), "Positive floating point number");
ok( t(1.5999999999999999), "Very precise floating point number" );
ok( t(8e5), "Exponential notation"); ok( t(8e5), "Exponential notation");
ok( t("123e-2"), "Exponential notation string"); ok( t("123e-2"), "Exponential notation string");
ok( t(answer), "Custom .toString returning number"); ok( t(answer), "Custom .toString returning number");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment