#java
#java
Вопрос:
Я должен показать стоимость фонда клиентам на следующие 30 лет в одном из моих приложений, но проблема в том, что присутствуют некоторые десятичные значения, поэтому мы должны округлить эти значения, чтобы мы были рассчитаны правильно. например, у нас есть значения типа 414.598940334717, они должны округляться до 414.60, но с помощью этой функции округление не выполняется до 414.61 в соответствии с таблицей. Я написал этот метод
BigDecimal bd = new BigDecimal(Double.toString(414.598940334717));
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP );
Комментарии:
1. когда я попробовал ваш код, он успешно запустился и возвращает
414.60
..2. Но электронная таблица выдает 414,61
3. вы уверены, что это тот код, который вставляет значения в электронную таблицу? Что вы хотите сделать> не могли бы вы более кратко изложить свою проблему?
Ответ №1:
попробуйте
DecimalFormat twoDForm = new DecimalFormat("#.##");
System.out.print(twoDForm.format(Double.valueOf("414.588940334717")));
Комментарии:
1. однако вы не можете округлить от .59 до .61, это будет .60
Ответ №2:
Я не вижу вашей проблемы…
BigDecimal bd = new BigDecimal(Double.toString(414.598940334717));
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP );
System.out.println("" bd);
Вывод
414.60
Мой обычный трюк для подобных округлений — просто использовать приведение:
double d = 414.598940334717;
double rounded = (int)(d * 100 0.5) / 100.0;
System.out.println("" rounded);
Вывод
414.6