printing float values will have one more digit. (#13276) [backport]

* printing float values will have one more digit. Fixes #13196
This commit is contained in:
Arne Döring
2020-02-07 17:10:25 +01:00
committed by GitHub
parent cdedb86348
commit b2c6db97f9
10 changed files with 45 additions and 41 deletions

View File

@@ -677,7 +677,7 @@ proc pretty*(node: JsonNode, indent = 2): string =
## Similar to prettyprint in Python.
runnableExamples:
let j = %* {"name": "Isaac", "books": ["Robot Dreams"],
"details": {"age": 35, "pi": 3.1415}}
"details": {"age": 35, "number": 3.125}}
doAssert pretty(j) == """
{
"name": "Isaac",
@@ -686,7 +686,7 @@ proc pretty*(node: JsonNode, indent = 2): string =
],
"details": {
"age": 35,
"pi": 3.1415
"number": 3.125
}
}"""
result = ""

View File

@@ -29,7 +29,7 @@ proc writeFloatToBuffer*(buf: var array[65, char]; value: BiggestFloat): int =
## * `buf` - A buffer to write into. The buffer does not need to be
## initialized and it will be overridden.
##
var n: int = c_sprintf(addr buf, "%.16g", value)
var n: int = c_sprintf(addr buf, "%.17g", value)
var hasDot = false
for i in 0..n-1:
if buf[i] == ',':