diff options
Diffstat (limited to 'lib/system/io.nim')
-rw-r--r-- | lib/system/io.nim | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/system/io.nim b/lib/system/io.nim index a6eeee7c7..a39e8cf94 100644 --- a/lib/system/io.nim +++ b/lib/system/io.nim @@ -8,6 +8,7 @@ # include inclrtl +import formatfloat # ----------------- IO Part ------------------------------------------------ type @@ -350,10 +351,16 @@ proc write*(f: File, i: BiggestInt) {.tags: [WriteIOEffect], benign.} = proc write*(f: File, b: bool) {.tags: [WriteIOEffect], benign.} = if b: write(f, "true") else: write(f, "false") + proc write*(f: File, r: float32) {.tags: [WriteIOEffect], benign.} = - if c_fprintf(f, "%.16g", r) < 0: checkErr(f) + var buffer: array[65, char] + discard writeFloatToBuffer(buffer, r) + if c_fprintf(f, "%s", buffer[0].addr) < 0: checkErr(f) + proc write*(f: File, r: BiggestFloat) {.tags: [WriteIOEffect], benign.} = - if c_fprintf(f, "%.16g", r) < 0: checkErr(f) + var buffer: array[65, char] + discard writeFloatToBuffer(buffer, r) + if c_fprintf(f, "%s", buffer[0].addr) < 0: checkErr(f) proc write*(f: File, c: char) {.tags: [WriteIOEffect], benign.} = discard c_putc(cint(c), f) |