From aeeaa882a8ea4954f19da85e0255cb6a2ab54dba Mon Sep 17 00:00:00 2001 From: Oscar Smith Date: Wed, 14 Feb 2024 15:20:26 -0500 Subject: [PATCH 1/2] fix `parse(Decimal, "1e0")` Off by 1 in the branch for the exponent. --- src/decimal.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/decimal.jl b/src/decimal.jl index f83c43b..65f5f4b 100644 --- a/src/decimal.jl +++ b/src/decimal.jl @@ -32,7 +32,7 @@ function scinote(str::AbstractString) if s == "-" n[1] = n[1][2:end] end - if parse(Int64, expo) > 0 + if parse(Int64, expo) >= 0 shift = parse(Int64, expo) - ((length(n) == 2) ? length(n[2]) : 0) s * join(n) * repeat("0", shift) else From 19ff2a30c736f97f1006aef615e56836d339e884 Mon Sep 17 00:00:00 2001 From: Oscar Smith Date: Wed, 14 Feb 2024 15:22:20 -0500 Subject: [PATCH 2/2] add test --- test/test_decimal.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_decimal.jl b/test/test_decimal.jl index 6e33e4b..cb2652e 100644 --- a/test/test_decimal.jl +++ b/test/test_decimal.jl @@ -17,6 +17,7 @@ using Test @test parse(Decimal, "1.23000") == Decimal(1.23000) == Decimal(0, 123, -2) @test parse(Decimal, "4734.612") == Decimal(4734.612) == Decimal(0, 4734612, -3) @test parse(Decimal, "541724.2") == Decimal(541724.2) == Decimal(0,5417242,-1) + @test parse(Decimal, "1e0") == Decimal(0, 1, 0) @test parse(Decimal, "2.5e6") == Decimal(2.5e6) == Decimal(0, 25, 5) @test parse(Decimal, "2.385350e8") == Decimal(2.385350e8) == Decimal(0, 238535, 3) @test parse(Decimal, "12.3e-4") == Decimal(12.3e-4) == Decimal(0, 123, -5)