提问人:roulette01 提问时间:10/17/2023 更新时间:10/17/2023 访问量:47
“四舍五入”的价值能保证平等吗?
Does a "round"'ed value guarantee equality?
问:
假设我有一些浮点值。假设我们这样做,即我们在小数点后第 3 位后截断。x
x = round(x, 3)
然后,如果我们检查以下内容:
x == 0.222
这是否保证小数点后第 3 位后没有可比性?
答:
1赞
user1245262
10/17/2023
#1
这取决于你的意思。请看以下示例:
>>> x = round(0.2221,3)
>>> x == 0.222
True
>>> x = round(0.2225,3)
>>> x == 0.222
False
>>> x = round(0.2221,3)
>>> y = 0.2221
>>> x == y
False
>>>
在第一种情况下,向下舍入为 ,因此两者相等。在第二种情况下,它被四舍五入,所以它们不是。在第三种情况下,即使向下舍入,它仍然不等于小数点后具有更多数字的值,这仍将向下舍入。x
0.222
如果要保证仅使用小数点后的前三个数字,则需要截断(或舍入)每个数字。
这有帮助吗?
评论
0赞
roulette01
10/17/2023
投了赞成票,但我意识到我的前提可能实际上是错误的。以下是我们的实际用例:stackoverflow.com/questions/77304463/... (这是一个单独的问题,我应该问而不是这个问题)
2赞
user1245262
10/17/2023
@roulette01 - 你可能想尝试乘以 1000 并转换为整数,然后再存储到 db 中,然后把自己想象成以毫为单位工作,或者记得在需要时潜入 1000。
上一个:浮点数学坏了吗?
评论
repr(round(x,3))==repr(round(y,3))
Decimal