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: 问题解决点下我回答右边的采纳吧,谢谢
2 年多之前 回复
qq_27480413
qq_27480413 回复caozhy: 懂了,谢啦
2 年多之前 回复
qq_27480413
qq_27480413 回复caozhy: 我在测试其他以5结尾的浮点数是有进位的哦,你的回答四舍六入让我开眼界了,谢谢你☺️
2 年多之前 回复
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 回复小灸舞: 谢谢谢谢,分析很让我启发
2 年多之前 回复
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: 我测试其他浮点数都是四舍五入,唯独这个
2 年多之前 回复
qq_27480413
qq_27480413 回复Daniel_Ching: 我测试其他的浮点数都是四舍五入
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言 55555图形 找车牌问题
55555图形:第一行四个空格55555  第二行三个空格4444   第三行两个空格333   第四行一个空格22    第五行零个空格1 #include #include int main () { int a=5; while(a>=1){ for(int b=1;b<=5;++b){ for(int c=1;c<=(a-1);++c){ printf(" "
2014 蓝桥杯 预赛 c/c++ 本科B组 第六题:奇怪的分式(11')
第六题:奇怪的分式(11')     上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:     1/4 乘以 8/5      小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)     老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!     对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢?  
OJ刷题---奇怪的分式
题目要求:
C语言scanf函数的返回值问题
不经意中发现scanf()的返回值问题,自己试验和了解了一下,一些所知与各位分享;void main() { int a;int b;int c;printf(&quot;请输入三个整数:&quot;);int x=scanf(&quot;%d%d%d&quot;,&amp;amp;a,&amp;amp;b,&amp;amp;c);printf(&quot;%d/n%d/n&quot;,a,x);}1.scanf()函数有返回值且为int型。2.scanf()函数返回的值为:正确...
C语言中一些乱七八糟的用法与细节(不断更新)
在学校里用C语言比较多,这篇是平时攒下的。有些内容在工作后可能会很常见,但是不用容易忘,所以就写篇博客吧。
动态规划之滑雪问题c++实现
问题描述:       Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道在一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子  1 2  3  4 5 16 17 18 19 6 15 24 25 20 7
让人迷茫的符号——C语言符号奇怪的用法以及注意事项
1 背景 首先,看看下面的代码→_→ #include #include #include #include
PAT Basic 1014. 福尔摩斯的约会 (20)(C语言实现)
最新内容已发布在 我的Github Pages, CSDN内容暂时不更新(将来有计划更新), 请前往链接查看最新内容. 欢迎star 我的repo题目大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&amp;amp;hgsfdk d&amp;amp;Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时...
Java - 计蒜客 - 奇怪的国家
有一个奇怪的国家,里面的国民对于事情的态度永远只有两面。当两个人遇到一起讨论一个事情的时候——两个持赞同观点的人遇到一起后会对这个事情都继续赞同;一个持赞同观点的人遇到一个持不赞同观点的人的时候,两人都会不再继续赞同;两个持不赞同观点的人遇到一起讨论后反而会对这个事情开始赞同。 输入包括两行,每行包括N个数字(1≤N≤50),分别表示两个人对于N个事情对应的看法——0表示不赞同、1表示赞同。
C语言中printf输出的奇怪错误 http://segmentfault.com/q/1010000002534752
C语言中printf输出的奇怪错误 jujuup 18 2015年02月04日 提问 关注 5 关注 收藏 1 收藏,2.3k 浏览 问题对人有帮助,内容完整,我也想知道答案 1 问题没有实际价值,缺少关键内容,没有改进余地 源代码很简单,就是定义一个float变量a=2.5,int变量b=2 然后将a,b分别