我需要将一个浮点变量舍入为2位有效数字,并将结果存储到一个新变量中(或者之前相同,它没关系)但是这是发生的事情:
>>> a
981.32000000000005
>>> b= round(a,2)
>>> b
981.32000000000005
Run Code Online (Sandbox Code Playgroud)
我需要这个结果,但需要一个不能是字符串的变量,因为我需要将它作为一个浮点数插入...
>>> print b
981.32
Run Code Online (Sandbox Code Playgroud)
实际上截断也可以工作我在这种情况下不需要极端精确.
你要做的事实上是不可能的.那是因为981.32不能完全表示为二进制浮点值.在最近的双精度二进制浮点值是:
981.3200000000000500222085975110530853271484375
Run Code Online (Sandbox Code Playgroud)
我怀疑这可能会让你感到震惊.如果是这样,那么我建议你阅读每个计算机科学家应该知道的关于浮点运算的内容.
您可以选择通过以下方式之一解决问题:
decimal.| 归档时间: |
|
| 查看次数: |
3215 次 |
| 最近记录: |