si stanno perdendo la precisione quando si valuta questo:
103993/33102.0
come una doppia divisione. In realtà, il seguente:
BigDecimal num = new BigDecimal(103993/33102.0);
è equivlent a:
double d = 103993/33102.0;
BigDecimal num = new BigDecimal(d);
invece, l'uso:
int scale = 100;
BigDecimal num1 = new BigDecimal(103993);
BigDecimal num2 = new BigDecimal(33102);
System.out.println(num1.divide(num2, scale, RoundingMode.HALF_UP).toString());
USCITA:
3.1415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613316415926530119026040722614947737
fonte
2013-03-01 18:50:16
nella mia console di eclissi, la mia uscita è: 3.1415926530119026040722614947737296840070086399613316415926530119026040722614947737296840070086399613 è che solo causa il dos di eclissi che vuole stampare tutto il tutto fuori –
@WillJamieson È necessario fare 'scale = 1000000', ma credetemi ci vorrà molto tempo. –
capito grazie! –