Intereting Posts
Как узнать момент, когда вызываемый человек берет свой телефон Увеличение камеры Google Glass XE16 Как узнать и использовать OpenGL ES 2.0? Я просто не понимаю – серьезный Qn. Android: Как разрешить соединение с API Google не удается из Сервиса? Android Удалить файл с помощью DDMS FAB с якорем в компоновке координатора имеет дополнительную маржу в андроиде до леденца Android Long Press на редактирование текстового поведения Не удалось создать Android-проект с помощью Facebook SDK против Android 2.2 (Froyo) Более быстрый или более чистый способ узнать, установлен ли пакет на Android Пользовательская синхронизация не работает с учетной записью Google (com.google) на некоторых устройствах Samsung Разрешить пользователю вставлять изображение в приложение для Android Укажите аргументы Cipher.getInstance ()? Прокрутка HTML-событий в Android WebView, находящемся внутри ScrollView Невозможно получить GPS-координаты, используя Javascript в браузере в Android Команда ndk-build не найдена в терминале Ubuntu

Как мне пройти 12.443 – 12.40

Я делаю расчет, и я получаю 12 443. Я хочу округлить его до 12,40. Так я пытаюсь это сделать, но я получаю 12 вместо 12,40

float result = Math.round( (new Float(result1)*0.3) + (new Float(result2)*0.7) ); vprosvasis.setText( Float.toString(result) ); 

Примеры:

  • Если я получу 12 70000, я хочу округлить до 12,7
  • Если я получу 13 4402, чтобы округлить его до 13,4
  • 11,19-11,2

Итак, окончательное число всегда будет в формате ##. @

 (float)Math.round(value * 10) / 10 

Должен дать вам результат, который вы хотите.

У меня есть эта функция:

 public static float get_ROUND(float p_VALUE, int p_DECIMAL) { if (p_DECIMAL == 0) return (float) Math.round(p_VALUE); long l_LNG = 1; for (int i = 1; i <= p_DECIMAL; i++) { l_LNG = l_LNG * 10; } return (float) Math.round(p_VALUE * l_LNG) / l_LNG; } 

Используйте DecimalFormat , но укажите правильный режим округления. По умолчанию он использует ROUND_HALF_EVEN , но ROUND_HALF_UP распространен для многих финансовых приложений.

Если вы действительно хотите найти и использовать округленное значение в дальнейших вычислениях (что необычно, потому что оно дает неточные результаты), вы можете использовать BigDecimal .

Я предполагаю, что result1 и result2 являются экземплярами String .

 float value = Float.parseFloat(result1)*0.3F + Float.parseFloat(result2)*0.7F; BigDecimal d = new BigDecimal(String.valueOf(value)); BigDecimal rounded = d.setScale(1, BigDecimal.ROUND_HALF_EVEN); 

Основным преимуществом использования BigDecimal в отличие от умножения, округления и деления является то, что вы можете выбрать режим округления (полу-вверх, полу-четный и т. Д.). BigDecimal намного дороже манипулировать, чем примитивный float , поэтому это будет лучшим вариантом для интерактивного финансового приложения, чем для научного моделирования.

Затем вы можете использовать rounded значение как есть или преобразовать его в float . Вы можете преобразовать в String с помощью метода toString() , но это лучше сделать с чувствительным к DecimalFormat объектом DecimalFormat , который будет принимать BigDecimal с помощью метода format() .

  vprosvasis.setText(""+new DecimalFormat("#,###,###.#").format((result1*0.3)+(result2*0.7))) 
 DecimalFormat twoDForm = new DecimalFormat("#.##"); yourvalue= Double.valueOf(twoDForm.format(yourvalue));