Когда я выполняю приведенный ниже код:
public class Test {
public static void main(String args[]){
DecimalFormat format = new DecimalFormat();
Double value = new Double(-1350825904190559999913623552.00);
StringBuffer buffer = new StringBuffer();
FieldPosition position = new FieldPosition(0);
format.format(new BigDecimal(value), buffer, position);
System.out.println(buffer);
}
}
Это правильно печатает -1,350,825,904,190,559,999,913,623,552
. У меня есть код, который проходит много двойников, поэтому мне не нужно преобразование из double в bigdecimal. Я понял, что время обработки BigDecimal велико. Итак, я делаю format.format(value, buffer, position)
И вижу, что точность теряется. Я получаю результат -1,350,825,904,190,560,000,000,000,000
.
Что я здесь делаю неправильно? Есть ли лучший способ справиться с этим и при этом сохранить точность. Я не хочу иметь дело с BigDecimals здесь, а просто работаю с десятичными знаками.
Какие-либо предложения?
Double value = new Double(0.1)
, хотели бы вы видеть полную точность (то есть0.1000000000000000055511151231257827021181583404541015625
)? - person user2357112 supports Monica   schedule 17.04.2015