Сталкиваюсь с проблемами при выполнении округления в Java

#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