我想将unicode字符串转换为带有2位小数的float。我使用locale.atof()来隐藏浮动。我知道我们可以使用locale.format将结果值格式化为2个小数点。是否可以使用单个函数将unicode转换为float并指定小数精度?
目前我正在使用它
float(locale.format('%.2f',(locale.atof('3.145678')))
还有其他办法吗?
答案 0 :(得分:1)
你应该考虑decimal
模块,它提供了处理浮点精度的工具,例如:
from decimal import Decimal as D
from decimal import ROUND_DOWN
d = D('3.145677777').quantize(D('0.01'))
print(d)
# 3.15
如果要截断,也可以设置舍入行为:
d = D('3.145677777').quantize(D('0.01'), rounding=ROUND_DOWN)
print(d)
# 3.14
答案 1 :(得分:1)
内置round
函数舍入到指定的位数,但没有一个函数同时转换字符串和舍入。
>>> round(float('3.141592'),2)
3.14
答案 2 :(得分:0)
float(("%.2f"%float('3.145')))
答案 3 :(得分:0)
定义你自己的一个功能:
def trim_decimal_points(s):
result = float(s)
return format(result, '.2f')
然后将其用作一个函数:
trim_decimal_points('3.145677777')