aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Viney <richard.viney@gmail.com>2024-06-20 16:43:30 +1200
committerLouis Pilfold <louis@lpil.uk>2024-06-23 11:52:52 +0100
commit8f38551c6060bf1afb2a56acc14143abd5263392 (patch)
tree01946ee746d00ab7ae0c87afd594c814da897e6d
parent3592b0b847d0c4348fc37be868ac22607ce426de (diff)
downloadgleam_stdlib-8f38551c6060bf1afb2a56acc14143abd5263392.tar.gz
gleam_stdlib-8f38551c6060bf1afb2a56acc14143abd5263392.zip
Fix `float.parse` failing to parse exponential notation on JavaScript
-rw-r--r--CHANGELOG.md1
-rw-r--r--src/gleam_stdlib.mjs2
-rw-r--r--test/gleam/float_test.gleam12
3 files changed, 14 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8847122..babdaf3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,6 +21,7 @@
- Improved bit array Base64 encoding and decoding speed on JavaScript.
- Fixed a bug where Base64 encoding a bit array larger than ~100KiB would throw
an exception on JavaScript.
+- Fixed `float.parse` failing to parse exponential notation on JavaScript.
## v0.38.0 - 2024-05-24
diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs
index d067cec..83fcec9 100644
--- a/src/gleam_stdlib.mjs
+++ b/src/gleam_stdlib.mjs
@@ -34,7 +34,7 @@ export function parse_int(value) {
}
export function parse_float(value) {
- if (/^[-+]?(\d+)\.(\d+)$/.test(value)) {
+ if (/^[-+]?(\d+)\.(\d+)([eE][-+]?\d+)?$/.test(value)) {
return new Ok(parseFloat(value));
} else {
return new Error(Nil);
diff --git a/test/gleam/float_test.gleam b/test/gleam/float_test.gleam
index a91c2c4..6731c23 100644
--- a/test/gleam/float_test.gleam
+++ b/test/gleam/float_test.gleam
@@ -26,6 +26,18 @@ pub fn parse_test() {
|> float.parse
|> should.equal(Ok(0.123456789))
+ "1.234e10"
+ |> float.parse
+ |> should.equal(Ok(1.234e10))
+
+ "-1.234e+10"
+ |> float.parse
+ |> should.equal(Ok(-1.234e10))
+
+ "1.234e-10"
+ |> float.parse
+ |> should.equal(Ok(1.234e-10))
+
""
|> float.parse
|> should.equal(Error(Nil))