That is a much too large value to be precisely represented by a float64. You need more bits, and you need to tell big.Float how many bits that is:
https://play.golang.org/p/btm6-_9NQgB //jb On 18 Apr 2018, at 09:57, agruet...@gmail.com<mailto:agruet...@gmail.com> wrote: I have been playing with the karatsuba algorithm and was doing some testing testing to compute the correct values of two large numbers 3141592653589793238462643383279502884197169399375105820974944592 and 2718281828459045235360287471352662497757247093699959574966967627. When working with the math/big package I noticed this oddity, I am sure I am doing something wrong but hopefully someone can help point it out. If notice from below the value out of big.NewFloat(myFloat) does not match the value from printing out g. It also does not match if I print using g.Float64() and then print the value from that. Should not this be the same thing in and the same thing out? Thanks in advance. // 8539734222673567065463550869546574495034888535765114961879601127067743044893204848617875072216249073013374895871952806582723184 - correct // 8539734222673566930176750436921930623970378254642185393758656420093500067115747270318696482879857934897660315084890343252951040 - incorrect but this is what I get with the big.NewFloat().Mul f := big.NewFloat(float64(3141592653589793238462643383279502884197169399375105820974944592)) //.SetPrec(9223372036854775807) //.SetMode(big.ToZero) g := big.NewFloat(float64(2718281828459045235360287471352662497757247093699959574966967627)) //.SetPrec(9223372036854775807) //.SetMode(big.ToZero) 2718281828459045271981924443963747209279784634148078442319446016.000000 this is what g prints vs what was input h := big.NewFloat(1).Mul(f, g).SetPrec(9223372036854775807) //.SetMode(big.ToZero) a := float64(3141592653589793238462643383279502884197169399375105820974944592) * float64(2718281828459045235360287471352662497757247093699959574966967627) fmt.Printf("%f\n", f) fmt.Printf("%f\n", g) //prints out 2718281828459045271981924443963747209279784634148078442319446016.000000 fmt.Printf("%f\n", a) fmt.Printf("%f\n", h) -- 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<mailto:golang-nuts+unsubscr...@googlegroups.com>. For more options, visit https://groups.google.com/d/optout. -- 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. For more options, visit https://groups.google.com/d/optout.