bcb中浮點數的四捨五入的問題

2021-05-24 06:15:25 字數 668 閱讀 5139

有關浮點數的位數的常用函式:

四捨五入函式: formatfloat("0.00", 小數); //四捨五入,保留兩位小數

按位截斷函式: format("%.2f", arrayofconst((小數))); //截斷兩位小數,不會四捨五入

今天我又使用了formatfloat 函式來進行四捨五入,發現這個函式對有些浮點數可以四捨五入,有些浮點數卻不行,例如:97.845,取兩位小數的結果仍然是97.84,這下子我暈頭了,四處找相應的四捨五入的函式。上網找了半天,發現這個下面這個可以進行函式四捨五入兩位小數:

double myround(double indata)

else

}沒想到這個函式對某些浮點數四捨五入的取值仍然不正確。沒辦法,我只好一次次嘗試,終於找到乙個可行的辦法,只是還是有點沒搞明白具體的原因。修改後的函式如下:

double myround(double indata)

else

}然後面mysql我也碰到了同樣的浮點數的四捨五入的問題,mysql中的四捨五入函式是round.我用round(浮點數,2)來四捨五入取兩位小數,結果同樣發現這個函式對某些浮點數也不起作用,沒辦法在round方法中給浮點數加上乙個很小的浮點數,問題也解決了。例如:round(浮點數+0.00000001,2),雖然知道這不是治本的方法,暫時沒有想到更好的辦法,目前也只能如此了。

float浮點數的四捨五入

前幾天,有個小夥伴在做實驗過程中,發現了乙個奇怪的現象,這個現象就是 他在用printf輸出浮點數的時候,想把資料保留到小數點後的兩位,他是這麼寫的 float c 1.155 printf 2f c 他的書寫是對的,沒有錯誤。但是他發現,當c等於1.555時,保留兩位小數輸出是1.55,而當c等於...

php浮點數四捨五入函式

在php中浮點數四捨五入的兩個常用的函式round與此同時ceil函式,可能小數保留位數.round 函式對浮點數進行四捨五入 語法 float round float val int precision 返回將 val 根據指定精度 precision 十進位制小數點後數字的數目 進行四捨五入的結...

python浮點數四捨五入的問題的分析

python中round做四捨五入要說清楚並不容易。有一種奇進偶舍的說法並不準確。下面的例子就無法用奇進偶舍來解釋 print round 1.275,2 1.27 原因分析 float採用二進位制編碼描述浮點數。在二進位制表示中,大多數有限位十進位制小數無法使用有限位二進位制進行精確表示。也就是說...