Ste*_*ini 1 python floating-point formatting
我有一个python程序,使用以下正则表达式读取浮点值
(-?\d+\.\d+)
Run Code Online (Sandbox Code Playgroud)
一旦我使用float(match.group(1))提取值,我得到实际的浮点数.但是,我无法区分数字是1.2345678还是1.234或1.2340000.
我面临的问题是再次打印出浮点值,格式完全相同.一个简单的解决方案是在仍然是一个字符串时"拆分并计算"浮点值,例如在小数点处拆分,并计算整数部分长度和小数部分长度,然后创建格式化程序为
print "%"+str(total_len)+"."+str(fractional_len)+"f" % value
Run Code Online (Sandbox Code Playgroud)
但也许您知道实现相同结果的标准方法吗?
如果要保持固定的精度,请避免使用float
s并使用Decimal
:
>>> from decimal import Decimal
>>> d = Decimal('-1.2345')
>>> str(d)
'-1.2345'
>>> float(d)
-1.2344999999999999
Run Code Online (Sandbox Code Playgroud)