增加雙重價值,我有以下代碼:錯誤而在Java
double d1=1000000000000000000.0; //which is equivalent to 1.0e^18
double d2=3434.0;
System.out.println(d1+d2);
它打印的,而不是1000000000000003460什麼1000000000000003434.是什麼問題?
增加雙重價值,我有以下代碼:錯誤而在Java
double d1=1000000000000000000.0; //which is equivalent to 1.0e^18
double d2=3434.0;
System.out.println(d1+d2);
它打印的,而不是1000000000000003460什麼1000000000000003434.是什麼問題?
@Anthony Pegram是對的。如果你需要這樣的精度使用BigDecimal。
需要的存儲數量超出預期。在這些情況下使用BIG十進制。
import java.math.BigDecimal;//remember to import this
public class UseBigDecimal{
public static void main(String[]args){
double d1=1000000000000000000.0;
double d2=3434.0;
BigDecimal bVal1 = new BigDecimal(d1);
BigDecimal bVal2 = new BigDecimal(d2);
BigDecimal sum = bVal1.add(bVal2);//you call the add() method not bVal1+bVal2
System.out.println ("Sum of BigDecimals " +sum.toString());
//need to call toString()
}
}
double沒有您需要的精度級別。沒有足夠的有效數字。 – 2012-02-09 14:34:29
@AnthonyPegram - 做出答案,而不是評論,因爲你是正確的。 – Paul 2012-02-09 14:36:18
@AnthonyPegram - 也提供了一個替代方案。 – Mob 2012-02-09 14:41:07