2015-04-10 9 views
0

В Android значение, введенное в EditText, преобразуется в float с использованием следующей строки кода.Плавающее значение с 2 знаками после запятой

 Float addPurchUnitCostPrice = Float.valueOf(addPurchaseCostPrice.getText().toString()); 

Я хотел бы иметь значение addPurchUnitCostPrice с 2-мя знаками после запятой (всегда). Как это может быть сделано?

+1

Float не работает таким образом. Вы можете отформатировать его, но вы не можете ограничить (или изменить) точность типа данных. –

+0

попробуйте использовать BigDecimal –

ответ

2

Значения с плавающей запятой не имеют десятичных знаков. У них есть бинарные места, и они несоизмеримы. Если вы хотите использовать десятичные числа, вам нужно использовать десятичный радиус, т. Е.

0

Вам будет лучше использовать currency formatter на Android, однако для этого требуется двойной. Форматировщик валют также будет иметь дело со странами, которые используют запятые вместо десятичных точек.

Так изменить код

double addPurchUnitCostPrice = Double.parseDouble(addPurchaseCostPrice.getText().toString()); 
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(); 
String formattedPrice = currencyFormat.format(price); 

Вы будете создавать цену с 2-х знаков после запятой и формат в зависимости от страны, определенного устройства пользователей.

+0

Я изменил формат от float до double и использовал 'DecimalFormat df = new DecimalFormat (" 0.00 ");'. Работа как ожидалось. Десятичные значения ограничиваются двумя знаками после запятой. Кроме того, целые значения заменяются двумя нулями вместо десятичного. Тем не менее, изучение ** валютного форматирования ** и ** Большая десятичная цифра **. Спасибо всем за предложения – user3314337

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