Picking the first decimal library on pkg.go.dev, what about https://play.golang.org/p/Co96HKlvSMp ?
On Sat, Jan 25, 2020 at 7:34 PM Kurtis Rader <kra...@skepticism.us> wrote: > You've fallen into a common trap. Base 2 floating point values cannot > represent most decimal values precisely. This is why you should never, > ever, do a simple equality test involving a F.P. value derived from a > calculation. You always have to apply an epsilon to define a range within > which the two F.P. values should be considered equal. The %v formatter does > something similar. The base 10 value 0.29 is actually > 0.28999999999999998002 when stored base 2 (that's from printing a long > double var on a x86_64 platform). > > Welcome to floating point pitfalls. Here be dragons! > > > On Sat, Jan 25, 2020 at 7:14 PM Jason E. Aten <j.e.a...@gmail.com> wrote: > >> >> https://play.golang.org/p/87bDubJxjHO >> >> I'd like to truncate a float64 to just 2 decimal places (in base 10), but >> math.Trunc is not helping me here... ideally I put 0.29 in and I get 0.29 >> out. >> Suggestions? Playground examples appreciated. >> >> package main >> >> import ( >> "fmt" >> "math" >> ) >> >> // truncate off everything after the last two decimals, no rounding. >> func decimal2(x float64) float64 { >> return math.Trunc(x*100) / 100 >> } >> >> func main() { >> x := 0.29 >> y := decimal2(x) >> fmt.Printf("x=%v -> y = %v", x, y) // prints x=0.29 -> y=0.28 >> } >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/96528d64-a670-45ba-ad4c-0701dcd0d78d%40googlegroups.com >> <https://groups.google.com/d/msgid/golang-nuts/96528d64-a670-45ba-ad4c-0701dcd0d78d%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > > > -- > Kurtis Rader > Caretaker of the exceptional canines Junior and Hank > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/CABx2%3DD8JvQETOfkO63FWveyS7AbpKpLM1uVQsB6QH_mDNGajgw%40mail.gmail.com > <https://groups.google.com/d/msgid/golang-nuts/CABx2%3DD8JvQETOfkO63FWveyS7AbpKpLM1uVQsB6QH_mDNGajgw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CANfvvbX4jw1NK%2BEyFpbo1s8yLPuGtTsABQDiYHRaHFmPRDuvjA%40mail.gmail.com.