Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Округление вещественного числа 
V
    Опции темы
Vitaly333
Дата 19.3.2007, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 6.11.2006
Где: Volgograd

Репутация: 2
Всего: 2



Как округлить вещественное число (double) до 3 - 4 знаков после запятой самым простым способом
PM MAIL   Вверх
LSD
Дата 19.3.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Умножить на 10 в степени х, округлить и разделить.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
dorogoyIV
Дата 3.5.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



а если количество знаков после запятой может быть любым, и надо оставить после запятой два знака. как это сделать? количество знаков перед запятой тоже может быть любым.
 smile 

Это сообщение отредактировал(а) dorogoyIV - 3.5.2007, 12:58
PM MAIL   Вверх
skhilkov
Дата 3.5.2007, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 371
Регистрация: 11.4.2006
Где: TOMSK

Репутация: 2
Всего: 7



могу предложить небольшой изврат - 
Код

DecimalFormat df = new DecimalFormat("0.00");
double blabla = 9.006;
String formattedBlaBla = df.format(blabla);
blabla = Double.parseDouble(formattedBlaBla);


Это сообщение отредактировал(а) skhilkov - 3.5.2007, 12:43


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
w1nd
Дата 3.5.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(LSD @  19.3.2007,  15:57 Найти цитируемый пост)
Умножить на 10 в степени х, округлить и разделить.

Может случится переполнение.

Цитата(skhilkov @  3.5.2007,  12:43 Найти цитируемый пост)
могу предложить небольшой изврат

Истинно изврат smile Предлагаю делать так:
Код
public static double round(double value, int fractionDigitCount, java.math.RoundingMode roundingMode) {
    return new java.math.BigDecimal(value).setScale(fractionDigitCount, roundingMode).doubleValue();
}



Это сообщение отредактировал(а) w1nd - 3.5.2007, 13:02


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
dorogoyIV
Дата 3.5.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



skhilkov, вылетает Exception 
PM MAIL   Вверх
skhilkov
Дата 3.5.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 371
Регистрация: 11.4.2006
Где: TOMSK

Репутация: 2
Всего: 7



dorogoyIV,  хм...... какой? при каких данных?


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
LSD
Дата 3.5.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(skhilkov @  3.5.2007,  16:51 Найти цитируемый пост)
хм...... какой? при каких данных? 

Скорее всего ParseException, т.к. в русской локали DecimalSeparator - это запятая, а не точка.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
dorogoyIV
Дата 4.5.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



я сделал как сказал w1nd.

Код

Double y;
x=new BigDecimal(y);
System.out.println(x.setScale(2,BigDecimal.ROUND_HALF_UP));


Thank's 
PM MAIL   Вверх
EvgenZ
Дата 26.11.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Freedom in me
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 3.8.2006

Репутация: нет
Всего: 11



Цитата(w1nd @  3.5.2007,  13:01 Найти цитируемый пост)
Может случится переполнение.

А как отследить переполнение?


--------------------
<удалено администрацией форума>
PM MAIL   Вверх
w1nd
Дата 26.11.2007, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(EvgenZ @ 26.11.2007,  11:51)
А как отследить переполнение?

Никак smile

Это сообщение отредактировал(а) w1nd - 26.11.2007, 13:09


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Vurn
Дата 26.11.2007, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 24.5.2007

Репутация: 2
Всего: 3



Кстати, если речь идет о финансовых вычислениях, то надо использовать строго BigDecimal. Никаких float || double.
PM MAIL   Вверх
Maksym
Дата 26.11.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Цитата(Vurn @  26.11.2007,  16:11 Найти цитируемый пост)
Кстати, если речь идет о финансовых вычислениях, то надо использовать строго BigDecimal. Никаких float || double. 

Мы писали для этого свою обертку на базе BigInteger (оперировали долями сентов).
PM MAIL   Вверх
EvgenZ
Дата 26.11.2007, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Freedom in me
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 3.8.2006

Репутация: нет
Всего: 11



Цитата(w1nd @ 26.11.2007,  13:08)
Цитата(EvgenZ @ 26.11.2007,  11:51)
А как отследить переполнение?

Никак smile

Нет даже аналога "checked" в C# ?


--------------------
<удалено администрацией форума>
PM MAIL   Вверх
w1nd
Дата 26.11.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(EvgenZ @  26.11.2007,  19:53 Найти цитируемый пост)
Нет даже аналога "checked" в C# ?

Ошибки переполнения не отслеживаются совсем. А что такое "checked" в C#?


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0912 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.