-6

我正在使用字典进行一些测试,为此,我以某种格式从数据库中打印出我想要的 Float64 值,以便将它们复制并粘贴到我的测试结构数组中,但是当我的测试失败时,我注意到这些值不同,但是只有通过0.0000000000002

然后,为了检查值,我在循环中编写了以下内容:

fmt.Printf("%f\n",value)
fmt.Println(value)

我得到了以下值:

702.200000
702.1999999999998
5683.090000
5683.089999999998
975.300000
975.3

我检查了文档,没有看到任何迹象表明 Float64 有特殊符号,或者 %f 将替换 Float64 为 Float32,但是,当我使用%v%g文档指定它们将%f在适当时使用时,我没有遇到问题.

当我使用任何一种指定精度为 12 时,我都没有遇到问题%.12f,但文档中没有指定默认精度。

为什么会这样?

编辑:这与重复的问题相同,但我相信 Adrien 对此的解释更详细。

4

1 回答 1

3

从文档

%e、%f 和 %#g 的默认精度为 6;对于 %g,它是唯一标识该值所需的最小位数。

于 2019-01-16T19:21:51.327 回答