2 qq 27480413 qq_27480413 于 2016.03.26 20:25 提问

c语言%f奇怪的问题!打破常规!!!

以前一直以为会四舍五入,今天测试这个的时候,发现解释不了,希望有人帮帮忙!图片说明

6个回答

caozhy
caozhy   Ds   Rxr 2016.03.26 22:45
已采纳

从统计学的角度,“四舍六入五成双”比“四舍五入”要科学,在大量运算时,它使舍入后的结果误差的均值趋于零,而不是像四舍五入那样逢五就入,导致结果偏向大数,使得误差产生积累进而产生系统误差,“四舍六入五成双”使测量结果受到舍入误差的影响降到最低。

caozhy
caozhy 回复明嗨5: 问题解决点下我回答右边的采纳吧,谢谢
一年多之前 回复
qq_27480413
qq_27480413 回复caozhy: 懂了,谢啦
一年多之前 回复
qq_27480413
qq_27480413 回复caozhy: 我在测试其他以5结尾的浮点数是有进位的哦,你的回答四舍六入让我开眼界了,谢谢你☺️
一年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.26 22:44
caozhy
caozhy   Ds   Rxr 2016.03.26 22:44
qq423399099
qq423399099   Ds   Rxr 2016.03.26 21:48

因为很多浮点数在计算机内是无法精确存储的,你虽然double i = 3.1445;
但其实不能精确存储这个数(只能存储一个无限接近3.1445的数,可能是3.1444999999999999999(很多个9),也可能是3.144500000000000001(很多个0))
所以当最后一位是5的时候,哈哈要看运气了~~~

qq_27480413
qq_27480413 回复小灸舞: 谢谢谢谢,分析很让我启发
一年多之前 回复
qq_27480413
qq_27480413   2016.03.26 20:26

不好意思,图片不清晰,i是3.1445 输出为3.144

u010955151
u010955151   2016.03.26 20:33

咦?我也一直以为四舍五入的。难道不是吗?

qq_27480413
qq_27480413 回复明嗨5: 我测试其他浮点数都是四舍五入,唯独这个
一年多之前 回复
qq_27480413
qq_27480413 回复Daniel_Ching: 我测试其他的浮点数都是四舍五入
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!