Commit c5677c3
committed
fix: preserve exact binary64 digits in decimal formats
Motivation:
High-precision %f and fixed-form %g formatting started from the shortest
round-tripping decimal string, hiding meaningful trailing digits of the
binary64 value.
Modification:
Use the exact binary64 decimal value when fixed formatting needs more than 15
digits, propagate the original %g significant precision, and use half-even
rounding for the exact path. Add non-tie and exact-halfway regressions while
preserving the public five-argument JVM descriptor.
Result:
High-precision fixed decimal output matches Python from the same IEEE-754
value, including ties-to-even, without changing the legacy low-precision
rounding path or JVM binary compatibility.
References:
- #1097
- https://jsonnet.org/ref/stdlib.html#std-format1 parent a638dc4 commit c5677c3
4 files changed
Lines changed: 32 additions & 4 deletions
File tree
- sjsonnet
- src/sjsonnet
- test/resources/new_test_suite
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
23 | 32 | | |
24 | 33 | | |
25 | 34 | | |
| |||
75 | 84 | | |
76 | 85 | | |
77 | 86 | | |
78 | | - | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
79 | 91 | | |
80 | | - | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
81 | 96 | | |
82 | 97 | | |
83 | 98 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1222 | 1222 | | |
1223 | 1223 | | |
1224 | 1224 | | |
1225 | | - | |
| 1225 | + | |
| 1226 | + | |
1226 | 1227 | | |
1227 | 1228 | | |
1228 | 1229 | | |
| |||
Lines changed: 11 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
0 commit comments