当前位置:系统粉 > 电脑问答 > 其他问答 > C语言的一个小问题。

C语言的一个小问题。

提问者:萝莉站街  |  浏览 次  |  提问时间:2017-02-27  |  回答数量:9

C语言的一个小问题。我在tubroC2.0中输入: main() { float b=123.1234567; printf(\"%f\",b); } 编译后,退出TC屏幕后显示的结果为:123.123459 怎么会这样?

已有9条答案
末世独霸

末世独霸

回答数:178  |  被采纳数:101

2017-02-27 21:32:21
不知道,我也想知道为什么。。。。
赞 17
diors丶ss

diors丶ss

回答数:61  |  被采纳数:138

2017-02-27 20:27:15
float的精度只有那么多
赞 6
伦敦式灰色

伦敦式灰色

回答数:57  |  被采纳数:144

2017-02-27 20:37:15
超过了,系统会怎么处理就讲不清楚了

你可以用double float
赞 5
永远记得jj

永远记得jj

回答数:115  |  被采纳数:21

2017-02-28 00:08:45
印象中float是只提供7位有效数字的,要更精确就用double,这个可以提供15-16位有效数字!
赞 11
如多巴黎不快乐

如多巴黎不快乐

回答数:4  |  被采纳数:112

2017-02-28 03:02:17
看来真是精度问题哦。你还可以多试个例子,这个例子也许会让你多了解一些的
int i=10;
float f=12.8f;
print(f%i);
赞 0
rpx1997

rpx1997

回答数:178  |  被采纳数:141

2017-02-28 04:27:27
可是,如果真的是精度问题的话,float类型,应该是占4个字节啊,也就是32位啊。那么123.1234567也不会超过32位啊
这我就不明白了 ~~~~
赞 17
蓝白银河

蓝白银河

回答数:22  |  被采纳数:81

2017-02-27 23:50:55
是内存处理中存在的误差造成的,至于电脑会怎么处理,这就是随机性的了,因为超过了FLOAT的基本的7个字节,系统就会按照自己的方式处理
赞 2
苍冥_雨落

苍冥_雨落

回答数:169  |  被采纳数:120

2017-02-28 06:19:53
如题~~~
赞 16
秦学仕

秦学仕

回答数:27  |  被采纳数:19

2017-02-28 17:58:48

32位又不都是拿来存小数的

系统中会规定多少位存整数,多少位存小数。
赞 2
解决方法
版权信息

Copyright @ 2011 系统粉 版权声明 最新发布内容 网站导航