python:使用小数精度将Unicode转换为float

时间:2017-06-27 11:22:37

标签: python unicode floating

我想将unicode字符串转换为带有2位小数的float。我使用locale.atof()来隐藏浮动。我知道我们可以使用locale.format将结果值格式化为2个小数点。是否可以使用单个函数将unicode转换为float并指定小数精度?

目前我正在使用它

float(locale.format('%.2f',(locale.atof('3.145678'))) 

还有其他办法吗?

4 个答案:

答案 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')