# myrho/elm-round

Round floats (mathematically/commercially) to a given number of decimal places
Elm
myrho Merge pull request #7 from nqthqn/patch-1
`Update instructions for new elm 0.19 binary`
Latest commit 8d6edff Mar 4, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Aug 24, 2018
tests Aug 25, 2018
.gitignore Mar 19, 2016
elm.json Aug 24, 2018

# elm-round

This library converts a `Float` to a `String` with ultimate control how many digits after the decimal point are shown and how the remaining digits are rounded. It rounds, floors and ceils the "common" way (ie. half up) or the "commerical" way (ie. half away from zero).

Example:

```x = 3.141592653589793

round 2 x -- "3.14"
round 4 x -- "3.1416"

ceiling 2 x -- "3.15"
floor 4 x -- "3.1415"```

The given number of digits after decimal point can also be negative.

```x = 213.14

round -2 x -- "200"
round -1 x -- "210"

ceiling -2 x -- "300"
floor -3 x -- "0"```

Commercial rounding means that negative and positive numbers are treated symmetrically. It affects numbers whose last digit equals 5. For example:

```x = -0.5

round 0 x -- "0"
roundCom 0 x -- "-1"

floor 0 x -- "-1"
floorCom 0 x -- "0"

ceiling 0 x -- "0"
ceilingCom 0 x -- "-1"```

Have a look at the tests for more examples!

Why couldn't you just do `x * 1000 |> round |> toFloat |> (flip (/)) 1000` in order to round to 3 digits after comma? Due to floating point arithmetic it might happen that it results into someting like `3.1416000000001`, although we just wanted `3.1416`.

Under the hood this library converts the `Float` into a `String` and rounds it char-wise. Hence it's safe from floating point arithmetic weirdness.

## Installation

From the root of your Elm project run

``````elm install myrho/elm-round
``````

Import it in your Elm modules:

`import Round `

Version Notes