gpt4 book ai didi

ruby-on-rails - 浮点乘法的 Ruby 奇怪问题

转载 作者:数据小太阳 更新时间:2023-10-29 07:11:40 24 4
gpt4 key购买 nike

有没有人用 ruby​​ 解决这个问题:

假设我们有:a = 8.1999999

我们想将它四舍五入为 2 位小数,即 8.20,然后乘以 1,000,000 得到 8,200,000

我们是这样做的;

(a.round(2) * 1000000).to_i

但是我们得到的是8199999,为什么?

奇怪的是,如果我们乘以 1000、100000 或 10000000 而不是 1000000,我们会得到正确的结果。有人知道为什么吗?

我们正在使用 ruby​​ 1.9.2 并尝试使用 1.9.3。

谢谢!

最佳答案

每当你在计算中得到时髦的数字时使用 bigdecimal

require 'bigdecimal'
a = BigDecimal(8.1999999.to_s)
(a.round(2) * 1000000).to_i

关于ruby-on-rails - 浮点乘法的 Ruby 奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11445123/

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