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

@@ -1,23 +1,14 @@
discard """
output: '''
1e-06 : 1e-06
1e-06 : 1e-06
0.001 : 0.001
1e-06 : 1e-06
1e-06 : 1e-06
10.000001 : 10.000001
100.000001 : 100.000001
'''
disabled: "windows"
disabled: "windows"
"""
import strutils
echo "0.00_0001".parseFloat(), " : ", 1E-6
echo "0.00__00_01".parseFloat(), " : ", 1E-6
echo "0.0_01".parseFloat(), " : ", 0.001
echo "0.00_000_1".parseFloat(), " : ", 1E-6
echo "0.00000_1".parseFloat(), " : ", 1E-6
doAssert "0.00_0001".parseFloat() == 1E-6
doAssert "0.00__00_01".parseFloat() == 1E-6
doAssert "0.0_01".parseFloat() == 0.001
doAssert "0.00_000_1".parseFloat() == 1E-6
doAssert "0.00000_1".parseFloat() == 1E-6
echo "1_0.00_0001".parseFloat(), " : ", 10.000001
echo "1__00.00_0001".parseFloat(), " : ", 1_00.000001
doAssert "1_0.00_0001".parseFloat() == 10.000001
doAssert "1__00.00_0001".parseFloat() == 1_00.000001

19
tests/float/tfloat8.nim Normal file
View File

@@ -0,0 +1,19 @@
discard """
disabled: windows
"""
{.passL: "-lm".} # not sure how to do this on windows
import strutils
proc nextafter(a,b: float64): float64 {.importc: "nextafter", header: "<math.h>".}
var myFloat = 2.5
for i in 0 .. 100:
let newFloat = nextafter(myFloat, Inf)
let oldStr = $myFloat
let newStr = $newFloat
doAssert parseFloat(newStr) == newFloat
doAssert oldStr != newStr
myFloat = newFloat