LibJS: Make string to number coercion work for doubles

This commit is contained in:
Linus Groh 2020-05-13 00:04:52 +01:00 committed by Andreas Kling
parent 7b8765c311
commit 0c14ee035c
Notes: sideshowbarker 2024-07-19 06:41:14 +09:00
2 changed files with 7 additions and 10 deletions

View file

@ -173,13 +173,11 @@ Value Value::to_number() const
return js_infinity();
if (string == "-Infinity")
return js_negative_infinity();
bool ok;
//FIXME: Parse in a better way
auto parsed_int = string.to_int(ok);
if (ok)
return Value(parsed_int);
return js_nan();
char* endptr;
auto parsed_double = strtod(string.characters(), &endptr);
if (*endptr)
return js_nan();
return Value(parsed_double);
}
case Type::Object:
return m_value.as_object->to_primitive(Object::PreferredType::Number).to_number();

View file

@ -27,9 +27,8 @@ try {
assert(-42 === -42);
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);