Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RubyonRails中的十进制问题_Ruby_Ruby On Rails 3_Decimal - Fatal编程技术网

RubyonRails中的十进制问题

RubyonRails中的十进制问题,ruby,ruby-on-rails-3,decimal,Ruby,Ruby On Rails 3,Decimal,我在数据库中存储了一个十进制值0.57作为数字(10,2)。当我使用RubyonRails在屏幕上检索值时,它显示0.57000000001您可以使用该类,并将其作为十进制或字符串存储在数据库中 比如说 sum = BigDecimal("0") 10_000.times { sum += BigDecimal("0.0001") } sum.to_f # => 1.0 another_sum = 0 10_000.times { another_sum += 0.0001 } anot

我在数据库中存储了一个十进制值0.57作为数字(10,2)。当我使用RubyonRails在屏幕上检索值时,它显示0.57000000001

您可以使用该类,并将其作为十进制或字符串存储在数据库中

比如说

sum = BigDecimal("0")
10_000.times { sum += BigDecimal("0.0001") }
sum.to_f # => 1.0

another_sum = 0
10_000.times { another_sum += 0.0001 }
another_sum # => 0.9999999999999062

您可以将
100*值
保存为整数,而不是将
保存为
数字(10,2)


换句话说,用美分而不是美元工作。这可以避免浮点错误。

嗨,Mani,你能发布一些代码吗?您正在使用哪个dbms?这称为浮点错误。这是计算机科学中的一个普遍问题;这绝不是ruby特有的。你到底想做什么?你能发一些代码吗<代码>数字(10,2)不是一个完整的代码示例--
数字是什么?为什么这会给你
0.57
?请阅读这些链接。为保证“完全准确”,请使用
十进制
而不是
浮点
。或者,如果这是一种货币,那么根据数据库可能会有一个解决方案。或者你真的想要一个总是四舍五入到小数点后2位的数字?使用
.round(2)
。您需要更具体地说明正在解决的实际问题。@TomLord“(10,2)”在我看来像是数据类型,即
数字(10,2)
/
十进制(10,2)
–10位小数点后两位。在这种情况下,这是数据库和Ruby/Rails之间的转换错误。@Manikrishnareddy不要将其作为注释发布,而是编辑您的问题。请提供更多的细节。看起来你只是发布了一个简单的最小值,我们很难给出一个基于此的解决方案。