如何在不出现invalid literal for int() with base 10: '0.00'
错误的情况下将“ 0.00”转换为整数?
这里是我当前的代码;
a = int('0.00') # which gives me an error
a = int(float('0.00')) # gives me 0, not the correct value of 0.00
任何建议将不胜感激!
答案 0 :(得分:6)
如果您需要跟踪小数点后的有效位数,则float
和int
都不是正确的数字存储方式。而是使用Decimal
:
from decimal import Decimal
a = Decimal('0.00')
print(str(a))
...完全准确地发出 0.00
。
如果这样做,您可能还应该阅读问题Significant figures in the decimal module,并遵守已接受答案的建议。
当然,您也可以四舍五入为浮点数或整数,然后将其重新格式化为所需的位数:
a = float('0.00')
print('%.2f' % a) # for compatibility with ancient Python
print('{:.2f}'.format(a)) # for compatibility with modern Python
print(f"{a:.2f}") # for compatibility with *very* modern Python