Ruby on rails RubyonRails-与to_f求和返回错误值
但这将返回Ruby on rails RubyonRails-与to_f求和返回错误值,ruby-on-rails,ruby,Ruby On Rails,Ruby,但这将返回3.5500000000000003,而不是3.55 有什么想法吗?浮点数不能精确地表示所有实数,而浮点数运算不能精确地表示真正的算术运算,这导致了许多令人惊讶的情况 我建议阅读: 您可能希望使用以避免此类问题: prices = ["1.6", "0.15", "1.8"] prices.sum { |price| price.to_f } 浮点数不能精确地表示所有实数,而浮点数运算不能精确地表示真算术运算,这导致了许多令人惊讶的情况 我建议阅读: 您可能希望使用以避免此类问题:
3.5500000000000003
,而不是3.55
有什么想法吗?浮点数不能精确地表示所有实数,而浮点数运算不能精确地表示真正的算术运算,这导致了许多令人惊讶的情况 我建议阅读: 您可能希望使用以避免此类问题:
prices = ["1.6", "0.15", "1.8"]
prices.sum { |price| price.to_f }
浮点数不能精确地表示所有实数,而浮点数运算不能精确地表示真算术运算,这导致了许多令人惊讶的情况 我建议阅读: 您可能希望使用以避免此类问题:
prices = ["1.6", "0.15", "1.8"]
prices.sum { |price| price.to_f }
BigDecimal(nil)抛出错误。当然。
nil
从哪里来?在你原来问题中的数组中没有nil
[“1.6”、“0.15”、“1.8”、nil].sum(&:to\r).to\f
似乎与nil一起工作。你可以要求'bigdecimal/util'
并使用[“1.6”、“0.15”、“1.8”、nil]。sum(&:to\d)
将nil
值视为0.0
,就像to_f
一样,BigDecimal(nil)抛出错误。当然。nil
从哪里来?在你原来问题中的数组中没有nil
[“1.6”、“0.15”、“1.8”、nil].sum(&:to\r).to\f
似乎与nil一起工作。你可以要求'bigdecimal/util'
并使用[“1.6”、“0.15”、“1.8”、nil]。sum(&:to\d)
将nil
值视为0.0
,就像到\u f
一样。