一部の地理空間データを検証しているので、他のデータ型をBigDecimalに強制変換する必要があります。
私が入手できる最も近いものは、次のコードスニペットを介したものです。
def is_decimalizable?(coordinate)
!coordinate.to_d.zero?
end
もちろん、to_d
無効な強制に対してゼロを返します。これにより、有効なゼロのような数値のような構造がテストに失敗します。BigDecimal
しかし、私は実際にドキュメントでより良い方法を見ることができません。(BigDecimal#coerce
有用なユースケースを実際に文書化していない方法があります。)
# Good:
is_decimalizable?(-100) #=> true
is_decimalizable?('-100') #=> true
is_decimalizable?(-100.0) #=> true
is_decimalizable?('-100.0') #=> true
is_decimalizable?('-100.0lng') #=> true
bigd = BigDecimal.new('0.1')
is_decimalizable?(bigd) #=> true
is_decimalizable?('asdf') #=> false
# Bad:
is_decimalizable?(0) #=> false
is_decimalizable?('0') #=> false
is_decimalizable?(0.0) #=> false
is_decimalizable?('0.0') #=> false
is_decimalizable?('0.0lng') #=> false
bigd = BigDecimal.new('0.0')
is_decimalizable?(bigd) #=> false
誰かがこれに対してより堅牢なソリューションを手に入れましたか?私はそれが価値があるもののためにruby2.0.0-p0を使用しています。