为了账号安全,请及时绑定邮箱和手机立即绑定

fmt.Printf("%f\n",x) 将 Float64 舍入为 Float32

fmt.Printf("%f\n",x) 将 Float64 舍入为 Float32

Go
郎朗坤 2023-06-01 16:23:48
我正在使用字典进行一些测试,为此,我以一种格式从数据库中打印出我想要的 Float64 值,以便将它们复制并粘贴到我的测试结构数组中,但是当我的测试失败时,我注意到这些值不同,但是只有通过0.0000000000002然后,为了检查我在循环中编写了以下内容的值:fmt.Printf("%f\n",value)fmt.Println(value)我得到了以下值:702.200000702.19999999999985683.0900005683.089999999998975.300000975.3%v我检查了文档,没有看到任何迹象表明 Float64 有特殊符号,或者 %f 将 Float64 替换为 Float32,但是,当我使用or时我没有遇到问题,文档指定它们将在适当的%g时候%f使用.当我指定精度为 12 时,我没有遇到问题%.12f,但文档中没有指定默认精度。为什么会这样?编辑:这是与副本相同的问题,但我相信 Adrien 对此的解释更详细。
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

从文档:

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


查看完整回答
反对 回复 2023-06-01
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信