Skip to content

Commit 8eacf46

Browse files
authored
Merge pull request #42 from paulbjarne/paulbjarne/fix-trailing-zeros
fix two digit trailing zeros < 0.10
2 parents 33bcdc8 + 79a50a6 commit 8eacf46

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/Data/Formatter/Number.purs

+9-2
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ format ∷ Formatter → Number → String
9090
format (Formatter f) num =
9191
let
9292
absed = Math.abs num
93-
tens = if absed > 0.0 then Int.floor $ Math.log absed / Math.ln10 else 0
93+
tens = if absed > 0.0
94+
then max (Int.floor $ Math.log absed / Math.ln10) 0
95+
else 0
9496
in if f.abbreviations
9597
then
9698
let
@@ -118,6 +120,11 @@ format (Formatter f) num =
118120
let
119121
multiplier = Math.pow 10.0 $ Int.toNumber f.after
120122
in Int.round $ leftover * multiplier
123+
roundedWithZeros =
124+
let roundedString = show rounded
125+
roundedLength = Str.length roundedString
126+
zeros = repeat "0" (f.after - roundedLength)
127+
in zeros <> roundedString
121128
shownNumber =
122129
if f.comma
123130
then
@@ -139,7 +146,7 @@ format (Formatter f) num =
139146
else
140147
"."
141148
<> (if rounded == 0 then repeat "0" f.after else "")
142-
<> (if rounded > 0 then show rounded else ""))
149+
<> (if rounded > 0 then roundedWithZeros else ""))
143150

144151

145152
unformat Formatter String Either String Number

test/src/Number.purs

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ numberTest = describe "Data.Formatter.Number" do
2828

2929
forAll show
3030
"format (unformat n) = n"
31-
[ "001.12"
31+
[ "001.12", "001.02"
3232
]
3333
(\n → (format fmt1 <$> (unformat fmt1 n)) `shouldEqual` (Right n))
3434

0 commit comments

Comments
 (0)