diff options
author | Marco A L Barbosa <malbarbo@gmail.com> | 2024-10-18 20:09:24 -0300 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-10-25 14:20:54 +0100 |
commit | 85d159bf81a5aacf33e316cec7a57de473be91e5 (patch) | |
tree | 93c6862634f20a7d4ac15691eef37596358311c4 /src/gleam_stdlib.mjs | |
parent | e412a09dda625c22656228f01928e98ec75fb82b (diff) | |
download | gleam_stdlib-85d159bf81a5aacf33e316cec7a57de473be91e5.tar.gz gleam_stdlib-85d159bf81a5aacf33e316cec7a57de473be91e5.zip |
Improve float.to_string on JavaScript
Diffstat (limited to 'src/gleam_stdlib.mjs')
-rw-r--r-- | src/gleam_stdlib.mjs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index 58a032e..74df3d0 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -47,11 +47,16 @@ export function to_string(term) { } export function float_to_string(float) { - const string = float.toString(); + const string = float.toString().replace('+', ''); if (string.indexOf(".") >= 0) { return string; } else { - return string + ".0"; + const index = string.indexOf("e"); + if (index >= 0) { + return string.slice(0, index) + '.0' + string.slice(index); + } else { + return string + ".0"; + } } } @@ -837,7 +842,8 @@ export function inspect(v) { if (v === null) return "//js(null)"; if (v === undefined) return "Nil"; if (t === "string") return inspectString(v); - if (t === "bigint" || t === "number") return v.toString(); + if (t === "bigint" || Number.isInteger(v)) return v.toString(); + if (t === "number") return float_to_string(v); if (Array.isArray(v)) return `#(${v.map(inspect).join(", ")})`; if (v instanceof List) return inspectList(v); if (v instanceof UtfCodepoint) return inspectUtfCodepoint(v); |