c语言是自动四舍五入,请问c语言如何实现四舍五入?
為什么 329.835 會變成 329.83,529.835 會變成 529.84,就是因為在內存中的數字是用二進制表示的,不可能準確表達十進制小數后三個位,剛好 329.835 在內存中相當于 329.83499...,不足 329.835,就會出現這個情況。
int((a*1000+5)*0.001) 的意思是取小數后兩個位,但是 basic 語言的語法,不是 c 語言的語法,而且也犯了一個錯誤,乘 0.001 以后才 int,不是把小數后所有數字都去掉了嗎?應該是:int(a*100+0.5) * 0.01,不要外面的括號,并且是在乘以 100 倍的時候取整型。按照 c 語言的語法,應該寫成:
(int) (a*100+0.5) * 0.01
(int) 是類型轉換運算符。但是 int 只到 32767,安全一點,應該用:
(long) (a*100 + 0.5) * 0.01
不過,這個并不能解決 329.835 相當于 329.83499... 的問題。比較保險的解決方法,第一,把所有的值賦值給 double 型變量,不要用 float,第二,不用 0.5,而是改用 0.50001 這類的數字,把 0.49999 一類的數字糾正過來:
(long) (a*100 + 0.50001) * 0.01
0.50001 中間要加多少個 0 效果才最理想,就要看實際數據了。
總結
以上是生活随笔為你收集整理的c语言是自动四舍五入,请问c语言如何实现四舍五入?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux开源软件经验,Ubuntu L
- 下一篇: c语言中虚函数和纯虚函数,虚函数和纯虚函