我有浮动列表(我使用MySQL,MysqL2 gem,一切标准)
create_table :some_table do |t|
t.float :amount
end
当我这样做时,我正在控制台里玩
a = SoMetable.new
a.amount = 9999.99
a.save!
#9999.99
a.amount
#9999.99
a.reload
a.amount
#9999.99
一切还好
a = SoMetable.new
a.amount = 9999.999
a.save!
#9999.999
a.amount
#9999.999
a.reload
a.amount
#10000.00
如你所见,ruby(或铁轨)围绕数字.
有人能解释我为什么会这样吗? ……还是只是我?
解决方法:
如果您想了解所有关于浮点数以及它们为什么有舍入误差的信息,请参阅What Every Computer Scientist Should Know About Floating-Point Arithmetic.
如果你想要进行货币计算,不要使用浮点数!使用定点数据类型.
如果使用rails迁移,则十进制类型为described here.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。