C語言小數四捨五入輸出可控制位數

2021-07-25 19:53:21 字數 929 閱讀 8947

本文章說明怎樣使得你能保留小數點後幾位(四捨五入)及其可控制的位數的實現:

#include int main()

執行結果:

423.44

負數的情況:

#include int main()

執行結果:

-423.44

由上面兩個例項可以看出區別,正負數都能得到相應的結果。

原理是:比如當乙個數要保留n位時,我們可以先將其乘上10的n次方在加減去0.5,然後除以10的n次方(後面的.0不能省略,因為這保證了最後運算出來的是個小數)。

拿上面的例項來說吧:

(423.43654*100+0.5)/100 == 423.440000,也就是說這一步的運算已經將位數(兩位)確定,而後面沒保留的位數變為零了,最後我們要做的就是將它以兩位小數的形式輸出(%.2lf)。

下面我介紹一種可以自己輸入控制保留位數的實現方法:  

#include #include int main()

else

printf("%.*lf\n", bit, a); //精度控制處的*代表讀取乙個int型引數並把它當做精度,即讀取bit

return 0;

}

執行結果:

請輸入你想要四捨五入的小數:

21.124685

請輸入你想要保留的位數:

321.125

and請輸入你想要四捨五入的小數:

-21.124685

請輸入你想要保留的位數:

3-21.125

總結:這樣就可以實現可控制的小數字數輸出。

ps:如果我有錯誤的地方還是有什麼好的方法實現,請告訴我,我會改進。謝謝。

c語言 四捨五入

對於正的浮點數,最簡單的四捨五入方法就是用這樣的乙個表示式 long x 0.5 但是如果表示式對負數有效的話會更好,即使在你看來負數的情況不會發生。這意味著你可以用乙個條件表示式 x 0 long x 0.5 long x 0.5 這個表示式的返回值就是與浮點變數 x 的值最接近的整數值。如果需要...

四捨五入保留兩位小數

1.double x2 0.5698 system.out.println string.format 2f x1 2.以指定的捨入模式格式化雙精度浮點型小數 param d 需格式化小數 param precision 保留小數字數 param roundingmode 捨入模式 return p...

c 四捨五入

在處理一些資料時,我們希望能用 四捨五入 法實現,但是c 採用的是 四捨六入五成雙 的方法,如下面的例子,就是用 四捨六入五成雙 得到的結果 double d1 math.round 1.25,1 1.2double d2 math.round 1.24,1 1.2double d3 math.ro...