當前位置:係統粉 > 電腦問答 > 其他問答 > 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 係統粉 版權聲明 最新發布內容 網站導航