猿问

go float 精度丢失问题

一些特定的小数用于计算总是出现精度问题,不知道go语言是怎么处理这个问题的.搞不懂的是第一个两个变量a,b都是同一个类型,为什么相减还是会出现精度问题
packagemain
import"fmt"
funcmain(){
a:=143.66
b:=14.55
c:=a-b
//c=c*100
fmt.Println(c)
fmt.Printf("s=%T\n",a)
fmt.Printf("s=%T\n",b)
fmt.Printf("s=%T\n",c)
d:=1129.6
fmt.Println((d*100))
}
打印的值如下:
129.10999999999999
s=float64
s=float64
s=float64
112959.99999999999
眼眸繁星
浏览 1191回答 2
2回答

泛舟湖上清波郎朗

这个和语言无关,所有的语言都是这样的,只要是float或者double类型都有这个问题,因为他们本身就是有误差的,如果要做到无误差,Java有个BigDecimal可以用。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答