0
巨大的Float
數字不會自動轉換爲BigDecimal
,與從Fixnum
到Bignum
的轉換一樣。例如,2.5**1000
生成Infinity
。我可以手動定義BigDecimal
爲BigDecimal('2.5')**1000
,但這會在數字不是很大時減慢計算速度,並且不需要BigDecimal
。當浮動超出範圍時自動移動到BigDecimal
有什麼辦法可以讓Float
自動轉換爲BigDecimal
自動(類似於從Fixnum
轉換爲Bignum
)?或者有沒有其他的Ruby類來做到這一點?我不關心浮點數的精度。
也許你可以使用'prepend'模塊使它更優雅。 – sawa
@sawa我想到了這一點,但我終於決定沒有理由將功能封裝到模塊中,因爲它不是一個「混入」,它只是一個「Float」類補丁。 – mudasobwa
謝謝Mudasobwa!它的工作,但現在的計算時間比我從一開始就定義BigDecimal中的所有變量時要高得多。我想這是因爲浮點運算中額外的if-then-else(?:)。 – Mehran