python中的round函数不能直接拿来四舍五入,一种替代方式是使用Decimal.quantize()函数。
具体内容待补。
>>> round(2.675, 2)
2.67
可以传递给Decimal整型或者字符串参数,但不能是浮点数据,因为浮点数据本身就不准确。
# -*- coding: utf-8 -*-
from decimal import Decimal, ROUND_HALF_UP class NumberUtil(object):
@staticmethod
def _round_by_decimal(number, quantize_exp):
str_num = str(number)
dec_num = Decimal(str_num).quantize(quantize_exp, rounding=ROUND_HALF_UP)
return float(dec_num) @staticmethod
def round_2_digits_by_decimal(number):
return NumberUtil._round_by_decimal(number, Decimal('0.01')) @staticmethod
def round_4_digits_by_decimal(number):
return NumberUtil._round_by_decimal(number, Decimal('0.0001'))
参考文章: