經過大量的搞亂我想出了以下代碼將任何數字的子類轉換成BigDecimal。任何數字類型BigDecimal
但我不確定這段代碼是否完全正確。我當然不滿意它的詳細程度!
有沒有更好的方法來做到這一點,並且這種方法有什麼缺陷需要我注意(除了我已經知道的浮點不精確表示問題之外)?
public DecimalSpec setValue (Number value) {
if (value instanceof Double) {
if ((((Double) value).isNaN())
|| (((Double) value).isInfinite())) {
throw new IllegalArgumentException ("Infinite or NaN values not allowed");
}
}
this.value = new BigDecimal (value.toString());
return this;
}
有真的不這樣做的任何普通的方式 - 'Number'根本不打算以您使用它的方式使用 - 但您可能儘可能接近實際。 –
什麼,沒有'浮動'? – Gabe