aboutsummaryrefslogtreecommitdiff
path: root/src/gleam_stdlib.mjs
diff options
context:
space:
mode:
authorMarco A L Barbosa <malbarbo@gmail.com>2024-10-18 20:09:24 -0300
committerLouis Pilfold <louis@lpil.uk>2024-10-25 14:20:54 +0100
commit85d159bf81a5aacf33e316cec7a57de473be91e5 (patch)
tree93c6862634f20a7d4ac15691eef37596358311c4 /src/gleam_stdlib.mjs
parente412a09dda625c22656228f01928e98ec75fb82b (diff)
downloadgleam_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.mjs12
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);