kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 lonewookie
lonewookie
Вопрос

Мне нужно округлить число float до двух знаков после запятой в Java

Возможный дубликат: Как округлить число до n знаков после запятой в Java

У меня возникли трудности с округлением числа float до двух знаков после запятой. Я пробовал несколько методов, которые видел здесь, включая простое использование Math.round(), но независимо от того, что я делаю, я продолжаю получать необычные числа.

У меня есть список плавающих чисел, которые я обрабатываю, первое в списке отображается как 1.2975118E7. Что такое E7?

Когда я использую Math.round(f) (f - плавающая цифра), я получаю точно такое же число.

Я знаю, что делаю что-то не так, но не уверен, что именно.

Я просто хочу, чтобы числа были в формате x.xx. Первое число должно быть 1.30 и т.д.

35 2012-06-17T15:09:08+00:00 4
 Community
Community
Редактировал вопрос 23-го мая 2017 в 11:47
Программирование
java
android
floating-point
Решение / Ответ
 Alexander
Alexander
17-го июня 2012 в 3:12
2012-06-17T15:12:19+00:00
Дополнительно
Источник
Редактировать
#16457675

1.2975118E7 - это научная нотация.

1.2975118E7 = 1.2975118 * 10^7 = 12975118

Кроме того, Math.round(f) возвращает целое число. Вы не можете использовать его для получения желаемого формата x.xx.

Вы можете использовать String.format.

String s = String.format("%.2f", 1.2975118);
// 1.30
 Alexander
Alexander
Редактировал ответ 17-го июня 2012 в 3:23
102
0
Хотите что-то узнать? Задавайте Ваш вопрос на нашем сайте
ru.kzen.dev
 kcoppock
kcoppock
17-го июня 2012 в 3:19
2012-06-17T15:19:02+00:00
Дополнительно
Источник
Редактировать
#16457676

Если вам нужно форматирование валюты (что вы не указали, но, похоже, это то, что вы ищете), попробуйте класс NumberFormat. Он очень прост:

double d = 2.3d;
NumberFormat formatter = NumberFormat.getCurrencyInstance();
String output = formatter.format(d);

Что выведет (в зависимости от локали):

$2.30

Также, если валюта не требуется (только точные два знака после запятой), вы можете использовать это вместо этого:

NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMinimumFractionDigits(2);
formatter.setMaximumFractionDigits(2);
String output = formatter.format(d);

Что выведет 2.30.

 cyrilchampier
cyrilchampier
Редактировал ответ 18-го апреля 2014 в 11:46
50
0
Хотите что-то узнать? Задавайте Ваш вопрос на нашем сайте
ru.kzen.dev
 Makoto
Makoto
17-го июня 2012 в 3:21
2012-06-17T15:21:21+00:00
Дополнительно
Источник
Редактировать
#16457677

Вы можете использовать DecimalFormat, чтобы дать вам стиль, который вы хотите.

DecimalFormat df = new DecimalFormat("0.00E0");
double number = 1.2975118E7;
System.out.println(df.format(number));  // prints 1.30E7

Поскольку она's в научной нотации, вы выиграли'т быть в состоянии, чтобы получить число меньше, чем 10<суп>7</суп> без потери, что на много порядков точности.

8
0
 nsfyn55
nsfyn55
17-го июня 2012 в 3:12
2012-06-17T15:12:06+00:00
Дополнительно
Источник
Редактировать
#16457674

Попробуйте посмотреть на класс BigDecimal. Это класс для работы с валютой и поддержки точного округления.

-2
0
Хотите что-то узнать? Задавайте Ваш вопрос на нашем сайте
ru.kzen.dev
Похожие сообщества 27
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
21 321 пользователей
Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. Размещение бесплатное. 📌 ВАЖНО: Правила публикации и правила канала: 📌 Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-12-10
Открыть telegram
pro.jvm
pro.jvm
7 211 пользователей
Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш канал: @proJVM Вакансии: @jvmjobs @jvmjobschat ⚠️ Оффтоп -> @flood ❌Переход на личности ❌Троллинг ❌Реклама ❌HH (вакансии) ❌Варез
Открыть telegram
learn.java
learn.java
5 534 пользователей
Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat
Открыть telegram
Java & Co
Java & Co
4 503 пользователей
Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/179171 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude
Открыть telegram
pro.JVM Jobs Chat
pro.JVM Jobs Chat
2 781 пользователей
Чат для обсуждения вакансий на JVM языках. Правила: - Никакого спама - Никакого троллинга и оскорблений участников - Размещение вакансий только через канал Канал для вакансий: @jvmjobs Основной чат: @jvmchat Наши друзья: @scala_jobs, @scala_jobs_feed
Открыть telegram
Android Architecture
Android Architecture
2 780 пользователей
Русскоязычный чат для обсуждения архитектуры Android приложений. У нас атмосфера взаимопомощи и уважения друг к другу! Общий чат по Android: @android_ru Чат для вакансий: @mobile_jobs Подробнее: https://telegra.ph/Android-Architecture-06-02
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Andrei Kalinin
Зарегистрирован 2 недели назад
2
Koroleva Ego
Зарегистрирован 1 месяц назад
3
Star Lenon
Зарегистрирован 1 месяц назад
4
Данил Жевнеров
Зарегистрирован 1 месяц назад
5
Анна Литвиненко
Зарегистрирован 2 месяца назад
Хотите что-то узнать? Задавайте Ваш вопрос на нашем сайте
ru.kzen.dev
ES
ID
JA
KO
RU
ZH
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией