Skip to content

wadey/go-rounding

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

go-rounding

Build Status Coverage Status

Rounding and truncation methods for big.Rat to close some of the gap in functionality between Rat and Decimal (such as Java's BigDecimal).

Documentation on GoDoc: http://godoc.org/github.com/wadey/go-rounding.

Why go-rounding?

There are a few other Decimal implementations for Go:

So why does go-rounding exist? big.Rat is a superset of the basic needs for a Decimal representation, the only major thing missing is some nice rounding methods. go-rounding is less than 150 lines of code, so it is easy to review and understand its implementation. If you need more features, you should use one of the above packages.

Benchmark

To run:

go test -v -benchmem -bench .

Example output on go1.5 darwin_amd64 commit 55c986f658

BenchmarkFinite          2000000           651 ns/op         182 B/op          3 allocs/op
BenchmarkFinitePrec      2000000           996 ns/op         244 B/op          5 allocs/op
BenchmarkRoundUp         1000000          2470 ns/op         397 B/op          9 allocs/op
BenchmarkRoundHalfEven   1000000          2458 ns/op         393 B/op          9 allocs/op
BenchmarkTrunc            500000          2669 ns/op         265 B/op          6 allocs/op