4

BigDecimalコンストラクターは、オブジェクトの精度桁数を指定するオプションの 2 番目のパラメーターを取ります。ruby-docから:

new(頭文字、数字)

Fixnum としての有効桁数。省略または 0 の場合、有効桁数は初期値から決定されます。

ただし、文字列を操作する場合、この動作は説明と一致しません。

BigDecimal.new('1.2345', 4).to_s('F')
# 1.2345
BigDecimal.new('1.2345', 1).to_s('F')
# 1.2345

String パラメータを使用するときに BigDecimal で精度を指定する方法は?

4

2 に答える 2

3

BigDecimal は、文字列値の精度パラメーターを取りません。

正しいアプローチ:

BigDecimal.new("1020.567").round(2) => 1020.57

間違ったアプローチ:

BigDecimal.new(1020.567, 2) => 1000.0
于 2014-11-19T11:38:41.427 に答える
0

簡単な回避策はBigDecimal.new('1.2345'.to_f, 1)

于 2013-05-19T16:54:43.663 に答える