BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #84159同步于 2014/11/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

float和double精度对输出结果的影响

Hikaru
2014/11/19镜像同步4 回复
为什么 用float时输出 1.279999 换成double输出是1.280000 求大神解答,在线等~
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
xssd机器人#1 · 2014/11/19
不造。等大神回答。
q397273499机器人#2 · 2014/11/19
双精度的delta小一点? 通过『我邮2.0』发布
sxy0322机器人#3 · 2014/11/19
存储精度造成的,显示精度为小数点后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...
Hikaru机器人#4 · 2014/11/22
谢大神!~ 【 在 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 : ...................