scryer-prolog
scryer-prolog copied to clipboard
New JSON parser number parsing discrepancy
I get for example:
$ target/release/scryer-prolog -v
"v0.9.0-181-g8e9302ea"
$ target/release/scryer-prolog
?- number_chars(X, "7.075657757024522e-7").
X = 7.075657757024522e-7.
?- json_chars(X, "7.075657757024522e-7", "").
X = number(7.075657757024521e-7)
The two results are different:
?- C = "7.075657757024522e-7",
number_chars(X, C),
json_chars(number(Y), C, ""),
X == Y.
false.
BTW: I used this fuzzer to find the number:
?- repeat, random(X), Y is X/1000000, number_chars(Y,C), json_chars(number(Z),C,""), Z \== Y.
See also: https://en.wikipedia.org/wiki/Fuzzing