一些特定的小数用于计算总是出现精度问题,不知道go语言是怎么处理这个问题的.搞不懂的是第一个两个变量a,b都是同一个类型,为什么相减还是会出现精度问题packagemainimport"fmt"funcmain(){a:=143.66b:=14.55c:=a-b//c=c*100fmt.Println(c)fmt.Printf("s=%T\n",a)fmt.Printf("s=%T\n",b)fmt.Printf("s=%T\n",c)d:=1129.6fmt.Println((d*100))}打印的值如下:129.10999999999999s=float64s=float64s=float64112959.99999999999
2 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
这个和语言无关,所有的语言都是这样的,只要是float或者double类型都有这个问题,因为他们本身就是有误差的,如果要做到无误差,Java有个BigDecimal可以用。
添加回答
举报
0/150
提交
取消