2011-06-25 7 views
1

Windows 7のjruby 1.6.2でレール3のアプリケーションを実行しています:session[:my_number] = 4.95次に別のコントローラで値を取得しようとしていますputs "My number is #{session[:my_number]}の場合、数値は4.0として出力されます。つまり、精度が失われているようです。私は、クッキーストアとdbストアの両方を使ってみました。代わりにキャッシュに入れてみました。私にはbase64エンコーディングの問題のように思えます。手動で数字をエンコーディングしてからデコードすると同じ結果になるからです。誰にも分かりますか?セッション中のfloatを格納しているjrubyの3つのアプリケーションは、小数点以下を捨てます

答えて

0

お試しください:​​?

+0

返信いただきありがとうございます。これはフォーマット上の問題ではありません。この数値は、正確な値が4.0の浮動小数点数としてセッションからフェッチされます。したがって、書式設定によってこれらの小数点以下を返すことはできません。 number_with_precisionを使用すると、私に4が与えられます。問題は、セッションストアのタイプ(cookie、activerecordなど)に関係なく、セッションにデータを格納するために使用されるbase64エンコーディング/デコード/マーシャリングプロセスです。 Railsセッションは、プラットフォーム固有の 'pack'メソッドを使用して、データをbase64でエンコードされた文字列に変換します。この場合、 'pack'のjruby実装です。 –

関連する問題