unformatNumber seems to be broken
Opened this issue · 3 comments
commandodev commented
> import Data.Formatter.Number (unformatNumber)
> unformatNumber ("00.00") "5.0"
(Left "Error: too few digits before dot")
> unformatNumber ("00.00") "50.0"
(Left "Error: too few digits after dot")
> unformatNumber ("00.00") "50.00"
(Right 50.0)
> unformatNumber ("00.00") "50.0234252"
(Right 2392.52)
> unformatNumber ("0.00") "50.0234252"
(Right 2392.52)
> unformatNumber ("0.0") "50.0234252"
(Right 23475.2)
I'm not sure if the first two are expected or not, but the last two seem clearly wrong.
safareli commented
> unformatNumber "0.0" "1507142848002.0" (Right -390672894.0)
from #38 by @Houndolon
safareli commented
I think issue is that we should check for equality here
https://github.com/slamdata/purescript-formatters/blob/master/src/Data/Formatter/Number.purs#L184-L193
before ←
if Arr.length beforeDigits == f.before
then P.fail $ "Error: need to have" <> show f.after <> " digits before dot"
else pure $ Int.toNumber $ foldDigits beforeDigits
afterDigits ← some parseDigit
after ←
if Arr.length afterDigits == f.after
then P.fail $ "Error: need to have" <> show f.after <> " digits after dot"
else pure $ Int.toNumber $ foldDigits afterDigitssafareli commented
@cryogenian is this what you have suggested before as solution?