gpt4 book ai didi

ruby-on-rails - Rails : Math not computing correctly. 它关闭了 .00000000000001

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

我的 Rails 应用程序计算不正确。我认为这与变量类型(int 与 float)有关,但不确定哪里出了问题。

根本问题是我的 Stat 模型中的这个方法:

def lean_mass
self.weight * 0.01 * (100 - self.body_fat)
end

在哪里

Stat.weight = 140
Stat.body_fat = 15

它返回 119.00000000000001 而不是 119

但是,在哪里

Stat.weight = 210
Stat.body_fat = 15

它返回 178.5,正确的数字。

有人知道为什么要输入那个小的小数吗?

如果有帮助,体重的数据类型是整数,body_fat 是小数。

最佳答案

float 不能精确表示所有实数。而且浮点运算不能精确表示每一个算术运算。这会导致许多令人惊讶的情况。

显示此行为的一个简单示例:

0.1 + 0.2
#=> 0.30000000000000004

我建议阅读:https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems

您可以通过使用 BigDecimal 而不是 float 来避免大部分此类问题:

require 'bigdecimal'
BigDecimal.new('0.01') * 140 * (100 - 15)
#=> 119.0

关于ruby-on-rails - Rails : Math not computing correctly. 它关闭了 .00000000000001,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28170372/

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