Ruby-on-Rails在十进制数中带有尾随零的问题

Ruby-on-Rails在十进制数中带有尾随零的问题,ruby-on-rails,decimal,bigdecimal,Ruby On Rails,Decimal,Bigdecimal,我们目前正在用RubyonRails开发一个Webapp,我们在其中进行一些优化计算。最初,我们从CSV文件导入数据。这些文件全年每15分钟包含一条记录。所以有35k条记录,带有时间戳和值。一条记录如下所示: 2018年1月1日00:15;34.82 不幸的是,我们遇到了一些奇怪的行为。如果CSV的格式为尾随零,则结果与不带尾随零的计算结果不同 2018年1月1日00:15;34.8200 在RoR中,我们确实将值格式化为浮点数,但我觉得浮点数数据类型的微小不精确性不应该对此产生任何影响 有什么

我们目前正在用RubyonRails开发一个Webapp,我们在其中进行一些优化计算。最初,我们从CSV文件导入数据。这些文件全年每15分钟包含一条记录。所以有35k条记录,带有时间戳和值。一条记录如下所示:

2018年1月1日00:15;34.82

不幸的是,我们遇到了一些奇怪的行为。如果CSV的格式为尾随零,则结果与不带尾随零的计算结果不同

2018年1月1日00:15;34.8200

在RoR中,我们确实将值格式化为浮点数,但我觉得浮点数数据类型的微小不精确性不应该对此产生任何影响


有什么想法吗,发生了什么事?我正在深入挖掘我们的代码,找不到导致此问题的原因。将数据类型从float改为BigDecimal也没有帮助。

计算机不像人类那样看待数字。也许能让你更好地了解发生了什么。这是关于钱以及整数和浮点数是如何工作的。谢谢你。我意识到了这一点,并尝试使用BigDecimal而不是float,但问题仍然存在。此外,这与小数本身无关,只要没有尾随的零,我对计算没有任何问题。我不知道为什么要将时间戳更改为小数,您可以将
01.01.2018 00:15;34.82
到现在这样的时间
'01.01.2018 00:15;34.82'-to_datetime
,可以执行计算时差等所需的任何计算“结果不同于栏杆零位的计算”是什么意思?它们有何不同?它们有什么不同的价值吗?”34.82'-to_f='34.8200'-to_f=>true。在将值解析为浮点值之前,您不能删除尾随的零吗?您是说34.8200吗?您可以使用
truncate
34.8200.truncate(2)#=>34.82