python中round(四捨五入)的坑

2022-02-28 17:12:44 字數 939 閱讀 1675

python中的round函式不能直接拿來四捨五入,一種替代方式是使用decimal.quantize()函式。

具體內容待補。

>>> round(2.675, 2)

2.67

可以傳遞給decimal整型或者字串引數,但不能是浮點資料,因為浮點資料本身就不準確。

1

#-*- coding: utf-8 -*-

2from decimal import

decimal, round_half_up34

5class

numberutil(object):

6@staticmethod

7def

_round_by_decimal(number, quantize_exp):

8 str_num =str(number)

9 dec_num = decimal(str_num).quantize(quantize_exp, rounding=round_half_up)

10return

float(dec_num)

1112

@staticmethod

13def

round_2_digits_by_decimal(number):

14return numberutil._round_by_decimal(number, decimal('

0.01'))

1516

@staticmethod

17def

round_4_digits_by_decimal(number):

18return numberutil._round_by_decimal(number, decimal('

0.0001

'))

oracle中round 四捨五入

語法 round函式 語法為round number,num digits 其中number是需要進行四捨五入的數字 num digits為指定的位數,按此位數進行四捨五入,如果num digits大於 0,則四捨五入到指定的小數字,如果num digits等於 0,則四捨五入到最接近的整數,如果n...

MySQL中round 四捨五入之坑

計算數值時,因將乙個數值由 四捨五入改成sql四捨五入做整數處理而產生了誤差。該字段為varchar型別,修改後的計算結果與之前的結果當小數字為.5四捨五入進製時,竟然出現誤差。例如2.5,當欄位型別為varchar或double型別時,使用round函式,結果為2,而decimal則進製正常。執行...

SQL的四捨五入ROUND函式

sql四捨五入2007 11 01 16 35問題1 select cast 123.456 as decimal 將會得到 123 小數點後面的將會被省略掉 如果希望得到小數點後面的兩位。則需要把上面的改為 select cast 123.456 as decimal 38,2 123.46 自動...