【发布时间】:2017-10-02 18:38:14
【问题描述】:
我的一个表单中有一个浮点字段,将其视为 field_x。基于那个 field_x 我有一些计算。 毕竟如果field_x小数点后有n位,结果也应该有n位。
例如: field_x = 0.00000001(小数点后n位)
结果 = 一些计算
如果结果 = 22 我必须将其显示为 22.00000000(小数点后 n 位)
len(str(number-int(number))[1:])给出答案
**这里的数字可以是0.00101,0.110,0.787等
但是对于像 0.000001 这样的一些值,它给出的答案不正确
【问题讨论】:
-
对于你的例子,字符串是
1e-06!!方法不对。 -
是的,我知道..这就是为什么要求回答
-
浮点数的内部表示可能会让您大吃一惊。因此,当将 0.00001 输入到
decimal.Decimal对象时,我得到0.000010000000000000000818030539140313095458623138256371021270751953125... 很难回答这个问题。如果数字是从文件中输入/读取的,则使用字符串表示来计算您的值,不要强制转换为浮点数。 -
是的......我试过......如果它的十进制。十进制()它没问题
-
抱歉,如果您在浮点数中输入数据,因为在将字符串转换为浮点数时会丢失精度,这是不可能的。你能扩大你的问题。数字从何而来?
标签: python-2.7 floating-point decimal odoo-8