Skip to content

Decimal.fromString incorrectly parses invalid strings #186

@0i00000000a7

Description

@0i00000000a7

Version: 2.1.2

Reproduction Test Cases:

console.log(Decimal.fromString("a").toString()) // 0
console.log(Decimal.fromString("b").toString()) // 0
console.log(Decimal.fromString("abcd").toString()) // 0
console.log(Decimal.fromString("abcde").toString()) // NaN
console.log(Decimal.fromString("e").toString()) // NaN
console.log(Decimal.fromString("f").toString()) // 0
console.log(Decimal.fromString("abcdfghijklmnopqrstuvwxyz").toString()) // 0
console.log(Decimal.fromString("abcdefghijklmnopqrstuvwxyz").toString()) // NaN

console.log(Decimal.fromString("!10").toString()) // 0
console.log(Decimal.fromString("10!").toString()) // 10
console.log(Decimal.fromString("1+1").toString()) // 1
console.log(Decimal.fromString("1+2").toString()) // 1

console.log(Decimal.fromString("e!10").toString()) // NaN
console.log(Decimal.fromString("e!e10").toString()) // 1e10000000000
console.log(Decimal.fromString("e!e!10").toString()) // NaN

console.log(Decimal.fromString('{"a":"The quick brown fox jumps over the lazy dog.","b":"e1e10","c":0,"d":{},"e":1.7976931348623157e+308}').toString()) // (e^7)308, the input string contains 7 "e"s.

console.log(Decimal.fromString("1,").toString()) // 1
console.log(Decimal.fromString("1,0").toString()) // 10
console.log(Decimal.fromString("1,000").toString()) // 1000
console.log(Decimal.fromString("1,000000").toString()) // 1000000
console.log(Decimal.fromString("1,000,000").toString()) // 1000

console.log(Decimal.fromString(" 123456 ").toString()) // 123456
console.log(Decimal.fromString("123 456 ").toString()) // 123
console.log(Decimal.fromString("1 e 10").toString()) // 1

console.log(Decimal.fromString("1e").toString()) // 1
console.log(Decimal.fromString("1e+").toString()) // 1
console.log(Decimal.fromString("1e-").toString()) // 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions