Skip to content

Instantly share code, notes, and snippets.

@katlogic
Created June 4, 2014 08:30
Show Gist options
  • Save katlogic/9f43c36197421b8d09d3 to your computer and use it in GitHub Desktop.
Save katlogic/9f43c36197421b8d09d3 to your computer and use it in GitHub Desktop.
proc c_sprintf(buf, frmt: cstring):int {.header: "<stdio.h>",
importc: "sprintf", varargs, noSideEffect.}
proc to_s(f: float): string =
var buf: array [0..64, char]
var n:int = c_sprintf(buf, "%.16g", f)
for i in 0..n:
if buf[i] == '.': return $buf
buf[n] = '.'
buf[n+1] = '0'
buf[n+2] = '\0'
result = $buf
stdout.writeln(to_s(1))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment