gpt4 book ai didi

Python - 将 float 舍入为 2 位数字

转载 作者:行者123 更新时间:2023-11-28 20:06:06 25 4
gpt4 key购买 nike

我需要将一个浮点变量四舍五入到 2 位有效数字并将结果存储到一个新变量中(或者与之前相同,这无关紧要)但这是发生了什么:

>>> a    
981.32000000000005
>>> b= round(a,2)
>>> b
981.32000000000005

我需要这个结果,但是要放入一个不能是字符串的变量中,因为我需要将它作为 float 插入...

>>> print b    
981.32

实际上截断也可以,在这种情况下我不需要非常精确。

最佳答案

你想做的事实际上是不可能的。这是因为 981.32 不能完全表示为二进制浮点值。 closest double precision binary floating point value是:

981.3200000000000500222085975110530853271484375

我怀疑这可能会让您感到震惊。如果是这样,那么我建议您阅读 What Every Computer Scientist Should Know About Floating-Point Arithmetic .

您可以选择通过以下方式之一解决您的问题:

  1. 接受二进制 float 不能准确表示此类值的事实,并继续使用它们。根本不要做任何四舍五入,并保留完整的值(value)。当您希望将值显示为文本时,请对其进行格式化,以便仅显示两位小数。
  2. 使用可以准确表示您的号码的数据类型。这意味着十进制而不是二进制类型。在 Python 中,您将使用 decimal

关于Python - 将 float 舍入为 2 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24634664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com