返回信息流为什么
用float时输出 1.279999
换成double输出是1.280000
求大神解答,在线等~
这是一条镜像帖。来源:北邮人论坛 / cpp / #84159同步于 2014/11/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
float和double精度对输出结果的影响
Hikaru
2014/11/19镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
存储精度造成的,显示精度为小数点后6位,但float和double存储方式有些差别,看ieee std754就知道了,比如你想存1.28,按照float存23位尾数为01000111101011100001010,结果即为1.2799999713897705,显示小数点后6位为1.279999。而用double存储尾数52位为0100011110101110000101000111101011100001010001111100,结果应为1.2800000000000002,所以显示为1.280000。你可以让程序多显示小数点后几位观察一下结果。
【 在 Hikaru 的大作中提到: 】
为什么
用float时输出 1.279999
换成do...
谢大神!~
【 在 sxy0322 的大作中提到: 】
: 存储精度造成的,显示精度为小数点后6位,但float和double存储方式有些差别,看ieee std754就知道了,比如你想存1.28,按照float存23位尾数为01000111101011100001010,结果即为1.2799999713897705,显示小数点后6位为1.279999。而用double存储尾数52位为0100011110101110000101000111101011100001010001111100,结果应为1.2800000000000002,所以显示为1.280000。你可以让程序多显示小数点后几位观察一下结果。
: 为什么
: 用float时输出 1.279999
: ...................