2016-11-15 13 views
1

タイトルは単独で言語ごとにmany answersですが、私は奇妙な動作をしています。私はレールのコンソールで正しい数字を取得しますが、Railsでは正しく表示されません。丸めからの応答を防ぐ

コンソール:

a = -42.57 
b = -43.47 
a - b = 0.8999999999999986 

Railsの答えは1.0です。このわずかなエラーは、私のアプリケーションに大きな違いをもたらします。

answer = (a-b) 
answer < 1 ? 'do something' : 'do other thing' 

正確な計算が必要です。なぜそれはRailsコントローラではなく、コンソールで正しいのですか?メソッドには基本的な数学だけではデータベースはありません。

コントローラ

def step_3 
a = 112.53 - 155 
b = 112.53 - 156 
a - b 
end 
+0

あなたは、コントローラのコードを投稿することができますか? – Pavan

+0

@Pavan Iveは – Sylar

+0

のポストを更新しました。あなたがお金を扱っている場合。浮遊物を決して使用しないでください。セントや、最小の分母で動作し、整数で作業するだけです。あなたはこれを心配する必要はありません。 –

答えて

3

これはRailsの問題ではありません。不適切なデータ型を使用しています。

あなたが正確な結果が必要な場合、あなたはこのようにそれを行うことができます:

require 'bigdecimal' 

a=BigDecimal.new('-42.57') 
b=BigDecimal.new('43.47') 
c=a-b 
puts(c.to_s('F')) # prints -86.04 
関連する問題