2017-02-15 19 views
1
DecimalFormat hisFormat = new DecimalFormat("########.##"); 
hisFormat.setRoundingMode(RoundingMode.DOWN); 

Float x=12345678.12345f; 
System.out.println("Float Value " + hisFormat.format(x)); 

Над кодом печати «Поплавок значение» в качестве 12345678 мне нужно 12345678.12Обрезать значение Float до двух десятичной точки в Java

Как я могу получить свой результат? Пожалуйста, дайте мне знать.

+0

Умножьте ваш номер на 100. Вокруг него. Разделите на 100, а затем распечатайте. –

+1

@LuudvanKeulen Это [неправильный способ сделать это] (http://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java#comment17119801_153753). – 4castle

+2

@LuudvanKeulen Числа с плавающей запятой хранятся в базе-2, а не в базе-10, поэтому умножение вводит ошибки округления, которые часто приводят к некорректному результату. – 4castle

ответ

1

использовать Double кроме Float, или вы потеряете точность

DecimalFormat hisFormat = new DecimalFormat("######.##"); 
hisFormat.setRoundingMode(RoundingMode.DOWN); 
Double x = 12345678.12345; 
System.out.println("Float Value " + hisFormat.format(x)); 

Использование Float результат 12345678

Использование Double результат 12345678,12

+0

По моему требованию, я получаю только значение Float. – Shailendra

Смежные вопросы