Java'da bigdecimal kullanarak yuvarlanmaya çalışıyorum ve sonlandırılmayan ondalık genişleme gösteren bir java.lang.ArithmeticException hatasında çalışıyordum.BigDecimal ile Yuvarlama?
Hataların kaynağını, java'da oldukça yeni olduğumdan herkes açıklayabilir mi? ve koduma yardım et i hata doğan inanıyoruz nerede
Teşekkür
protected BigDecimal p;
protected BigDecimal q;
protected BigDecimal d;
protected BigDecimal det;
protected BigDecimal exp;
protected int e;
this.p = pq.getP();
this.q = pq.getQ();
det = ((p.subtract(BigDecimal.ONE)).multiply(q.subtract(BigDecimal.ONE)));
exp = new BigDecimal(String.valueOf(e));
d = (det.divide(exp).setScale(2,BigDecimal.ROUND_HALF_UP));
değişkeni "d" dir.
'yeni BigDecimal (String.valueOf (e))' olmalıdır [ 'BigDecimal.valueOf (e) '] (https://docs.oracle.com /javase/7/docs/api/java/math/BigDecimal.html#valueOf%28long%29). – Andreas
@Andreas, yeni bir referans yeri oluşturmak ve fazladan bellek alanı açmak yerine, exp tarafından referans verilen değerin yerini alıyor mu? – TheLiquor
@ TheLiquor Ana neden, e 'bir“ int ”olduğundan, bir“ int ”(ya da“ long ”) 'un bir BigDecimal'e dönüştürülmesi kolay ve hızlıdır, fakat * formatlama *' '' '' '' '' sonra * bir BigDecimal için ayrıştırma * yavaş ve savurgan. – Andreas