mirror of
https://github.com/RGBCube/serenity
synced 2025-05-28 09:05:09 +00:00
LibJS: Make string to number coercion work for doubles
This commit is contained in:
parent
7b8765c311
commit
0c14ee035c
2 changed files with 7 additions and 10 deletions
|
@ -173,13 +173,11 @@ Value Value::to_number() const
|
||||||
return js_infinity();
|
return js_infinity();
|
||||||
if (string == "-Infinity")
|
if (string == "-Infinity")
|
||||||
return js_negative_infinity();
|
return js_negative_infinity();
|
||||||
bool ok;
|
char* endptr;
|
||||||
//FIXME: Parse in a better way
|
auto parsed_double = strtod(string.characters(), &endptr);
|
||||||
auto parsed_int = string.to_int(ok);
|
if (*endptr)
|
||||||
if (ok)
|
|
||||||
return Value(parsed_int);
|
|
||||||
|
|
||||||
return js_nan();
|
return js_nan();
|
||||||
|
return Value(parsed_double);
|
||||||
}
|
}
|
||||||
case Type::Object:
|
case Type::Object:
|
||||||
return m_value.as_object->to_primitive(Object::PreferredType::Number).to_number();
|
return m_value.as_object->to_primitive(Object::PreferredType::Number).to_number();
|
||||||
|
|
|
@ -27,9 +27,8 @@ try {
|
||||||
assert(-42 === -42);
|
assert(-42 === -42);
|
||||||
assert(+1.23 === 1.23);
|
assert(+1.23 === 1.23);
|
||||||
assert(-1.23 === -1.23);
|
assert(-1.23 === -1.23);
|
||||||
// FIXME: returns NaN
|
assert(+"1.23" === 1.23)
|
||||||
// assert(+"1.23" === 1.23)
|
assert(-"1.23" === -1.23)
|
||||||
// assert(-"1.23" === -1.23)
|
|
||||||
assert(+"Infinity" === Infinity);
|
assert(+"Infinity" === Infinity);
|
||||||
assert(+"+Infinity" === Infinity);
|
assert(+"+Infinity" === Infinity);
|
||||||
assert(+"-Infinity" === -Infinity);
|
assert(+"-Infinity" === -Infinity);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue