powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Арифметика Джавы. WTF?
53 сообщений из 53, показаны все 3 страниц
Арифметика Джавы. WTF?
    #38320609
junior_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

Итак, пару примеров кода.

Код: java
1.
2.
double x = 0.3 + 0.97;
System.out.println(x); // Выводит 1.27, ОК


Код: java
1.
2.
double x = 31.3 + 0.97;
System.out.println(x); // Выводит 32.27, ОК


Код: java
1.
2.
double x = 32.3 + 0.97; 
System.out.println(x); // Выводит 33.269999999999996,  ВТФ???


Код: java
1.
2.
double x = 49.3 + 12.97; 
System.out.println(x); // Выводит 62.269999999999996,  ВТФ???



Объясните кто-нибудь почему так. Проверил в сишарпе, там все нормально.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38320626
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junior_devОбъясните кто-нибудь почему такМагия данных.
Читать про приближённые вычисления вообще и про устройство компьютерных вещественных чисел - в частности.
Если читать лень, то просто запомните, что "десять в отрицательной степени" не может быть представлено конечной двоичной дробью.Проверил в сишарпе, там все нормально."Смешно".
Хотите округления - укажите в строке формата, скока точно граммов... знаков вам нужно.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38320628
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38320634
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, junior_dev!

> double x = 31.3 + 0.97;
> System.out.println(x); // Выводит 32.27, ОК
>
>
> double x = 32.3 + 0.97;
> System.out.println(x); // Выводит 33.269999999999996, ВТФ???

Логично, во втором случае сумма больше 2^5, поэтому на "хвост" после
запятой остаётся меньше места и ошибка округления (0.97 не представимо в
виде конечной двоичной дроби) вылезает в 15й знак.

То, что в java по-умолчанию 15 знаков после запятой, а в C# меньше- сути
не меняет.

--
Алексей
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38320691
junior_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ясно, всем спасибо.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38320725
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_SamaraТо, что в java по-умолчанию 15 знаков после запятой, а в C# меньше- сути
не меняет.

Количество знаков после запятой тут не при чем. Double тип один и тот же и там и там.
В C# вывод в консоль реализует округление. В Java - нет.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38320730
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junior_dev, выведи double в двоичном представлении. Готов спорить что результат в C# и Java
будет одинаковым.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38320806
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38320818
milton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junior_dev,

Спасибо за вопрос.
Сразу вспомнил своих бывших коллег из других отделов, у которых в документах Excel с формулами внезапно появлялись расхождения в 1*10e-9.
Для экономистов-юристов это вообще шок.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38320836
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Особенно интересно когда номера счетов пишут в формате double. Еще смешнее...
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38322894
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле ещё смешнее, что в Java, языке, который теперь служит в основном для программирования безнес-логики всяческих приложений, до сих пор нет встроенной точной десятичной арифметики, и нет соответствующего типа данных.
(встроенного).
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38322984
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivдо сих пор нет встроенной точной десятичной арифметики, и нет соответствующего типа данных.
(встроенного).1. А где есть?
2. Что ещё предложите встроить?
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38322999
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C# есть. А в Java нет примитивного типа для работы с фин.арифметикой. И это действительно проблема.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38323115
JavaSpringFrameworkHibernateGWT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторC# есть. А в Java нет примитивного типа для работы с фин.арифметикой. И это действительно проблема.
java.lang.BigDecimal не подходит что-ли?
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38323116
JavaSpringFrameworkHibernateGWT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonC# есть. А в Java нет примитивного типа для работы с фин.арифметикой. И это действительно проблема.
То есть java.math.BigDecimal, сорри http://docs.oracle.com/javase/6/docs/api/java/math/BigDecimal.html
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38323119
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще топикстартеру можно загуглить ieee-754
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38323131
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JavaSpringFrameworkHibernateGWTавторC# есть. А в Java нет примитивного типа для работы с фин.арифметикой. И это действительно проблема.
java.lang.BigDecimal не подходит что-ли?
А ты пробовал когда-нибудь закодить на ней какую-то простую расчётную формулу? Проверить что-то.
Посчитать процент и сложить. А потом сравнить с другим языком в котором есть хотя-бы реализация
инфиксных операций.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38323148
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
да вам не длинная арифметика то нужна, а перегрузка операторов ...
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38323656
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Basil A. Sidorov!

> 1. А где есть?

Ada :)
Соответственно pl/sql.

> 2. Что ещё предложите встроить?

По хорошему надо было сделать определение операций.
Давно было показано, зачем это надо.
Но Гослинг, как чукча- не читатель был...

--
Алексей
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38323747
gr_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а так

BigDecimal x = new BigDecimal(0.3 + 0.97,new MathContext(4, RoundingMode.HALF_EVEN));
System.out.println(x); // Выводит 1.27, ОК

x = new BigDecimal(31.3 + 0.97,new MathContext(4, RoundingMode.HALF_EVEN));;
System.out.println(x); // Выводит 32.27, ОК

x = new BigDecimal(32.3 + 0.97,new MathContext(4, RoundingMode.HALF_EVEN));;
System.out.println(x); // Выводит 33.27

x = new BigDecimal(49.3 + 12.97,new MathContext(4, RoundingMode.HALF_EVEN));;
System.out.println(x); // Выводит 62.27
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38324072
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirmayton,
да вам не длинная арифметика то нужна, а перегрузка операторов ...
Здесь - комплексная проблема. И попытка использовать double в операциях
с деньгами - это отчасти плата за неудобство BigDecimal. Я много сжёг своей кармы
в попытках исправить продакшен код где эти операции имели место. Но
кода много - а я один.

Даст бог в Scala концепция другая.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38324416
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЗдесь - комплексная проблемаА ещё бизнесу важен кадровый вопрос, а кадрам важны даты и интервалы между ними.
Давайте встроим календарь и интервальную арифметику прямо в язык.
Потом вспомним, что на компьютере у нас часы и реализуем два варианта - с учётом часовых поясов и без.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38324492
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
99% задач с датами покрываются простейшей арифметикой
наподобие Oracle Date. Арифметические операции с датой
трактуются как сложение и вычитание дробного числа суток.

Пример

Код: plsql
1.
select sysdate-1 from dual


возвращает вчерашний день. Разумеется функции работают
в контексте локали.

И разумеется код - самодостаточный.

Некто Антон Кекс в своих видео-посланиях цивилизации джавистам
справедливо обращает внимание на слёзную просьбу бизнес-аналитиков -
как можно больше логики переносить в БД . И думается на то
есть основания. И они лежат не в плоскости DBMS/Java а просто
исходят из объективной проблемы. Бизнес-расчёты в Java-коде
завуалированы. Код "шумит" лишними сущностями и понять ЧТО
собственно мы вычисляем - довольно затруднительно. Собственно
Java код не годится для обратного инжинеринга бизнес формулы.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38324683
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, В 18:00 местного времени владивостокский офис оформил приказ о приёме на работу "с сегодняшнего числа".
Какую дату увидит московский офис завтра? Сегодня он уже спит.
Ну или стандартная задача из ТК по расчёту отпускных - выходные учитываются, а праздничные - нет.

P.S. Я не против того, что мы живём в мире всё возрастающего комфорта - мне это очень даже нравится.
Я против того, чтобы объявлять недостаток комфорта глобальным дефектом, требующим исправления.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38324695
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Давай развивать твою мысль. Через 300 лет нам понадобиться несколько дополнительных
сущностей в локализации. Нам надо будет указывать номер планеты в солнечной системе.
Номер галлактики. Номер скопления или кластера и учитывать прочие забавные эффекты
физики света и времени о которых писал старый волосатый и усатый немец.

Поэтому давай не будем разбивать себе лоб об пол решая ОБЫЧНЫЕ каждодневные задачи.
Про локализацию я упомянул. Я живу и работаю в Украине и поэтому для всех местных
проектов часовой пояс - UTC+2 и даст бог нет пока проблем со временем во Владивостоке.

Тоже самое с decimal и java.lang.BigDecimal. Это разный подход. Я не буду спорить со столпами
ООП на тему концептуальности, нужности и ненужности примитивных типов и перегрузки
операций. Но я знаю что программист как человек устроен так что он ВСЕГДА упрощает
себе задачу. Он всегда старается писать компактно и лаконично. Ему иногда мешают
очень шумные маркетинговые технологии но я верю в то что здравый смысл восторжествует.

Дайте в Java примитивный тип decimal и все будут рукоплескать. Унылое бормотание теоретиков на тему
того что дескыть неконцептульаненько и некрасивинько никого не будут волновать.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38324718
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДайте в Java примитивный тип decimal и все будут рукоплескатьКак уже упоминалось, не decimal вам требуется, а перегрузка операторов.Унылое бормотание теоретиковОптимистичные практики должны понимать, что long достаточен для хранения бюджета всей страны в копейках. Даже после масштабирования на десять, чтобы аккуратно работать с округлением.

P.S. А, типа, с double результат форматировать не надо?
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38324789
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovmaytonДайте в Java примитивный тип decimal и все будут рукоплескатьКак уже упоминалось, не decimal вам требуется, а перегрузка операторов.Унылое бормотание теоретиковОптимистичные практики должны понимать, что long достаточен для хранения бюджета всей страны в копейках. Даже после масштабирования на десять, чтобы аккуратно работать с округлением.
Учитывая забавные случаи внезапных инфляцией (гипер-инфляцией) которые некоторы
страны переживали, такой способ хранения денежных величин - спорный. Впрочем надо
посчитать.

Вообще-то decimal, BCD, symbolic и прочие псевдо-символьные типы создавались с целью
обеспечения 100% переносимости бухгалтерских вычислений "на бумаге".

Я еще не готов находить конкретные юзкейсы этих случаев но давайте вместе с вами поищем
эти случаи. Например - обеспечивать округление младших дробных разрядов вледствие
частного от деления. Вам ведь придётся переводить этот long в строку, а это явно
лишняя операция да и попахивает антипаттерном.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38324831
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonУчитывая забавные случаи внезапных инфляцией (гипер-инфляцией) которые некоторы
страны переживали, такой способ хранения денежных величин - спорный. Впрочем надо
посчитать.В сравнении с double??? Я вас умоляю.
2^63 против 2^56 может вызывать какие-то вопросы?
До десятков квадрилионов не дотягивают, вроде, ни японцы, ни счастливые обладатели песет.Вообще-то decimal, BCD, symbolic и прочие псевдо-символьные типы создавались с целью
обеспечения 100% переносимости бухгалтерских вычислений "на бумаге"В этом контексте существенна именно десятичность арифметики.
double не может обеспечить такой переносимости в принципе. Но используется.
long обеспечивает такую переносимость просто по определению числа с фиксированной точкой. Но его использование вызывает вопросы.
Практики продолжают отжигать. Уж простите мой сарказм.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38324836
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забудьте про double!! Я его не обсуждаю вообще. Вы упомянули про long
(очевидно имеется в виду 64-х битное целое). ОК. Давайте его и обсудим.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38324982
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВы упомянули про long (очевидно имеется в виду 64-х битное целое). ОК. Давайте его и обсудим.А что его обсуждать? Десятичный логарифм двух ~=0,3010, 64 * 0,3010 ~= 19,26
Восемнадцать гарантированных десятичных цифр и запас, позволяющий отследить переполнение при сложении.
Для работы с десятыми копеек (одна запасная цифра) масштабируем на тысячу и получаем тысячу триллионов рублей.
С валютной бухгалтерией чуть хуже, т.к. есть курсы, превышающие тысячу. Т.е. отразить продажу более ста миллиардов рублей - может и не получиться. С другой стороны - нафига японцам такая куча деревянных???
Хранение в базе?
Для нового проекта нет принципиальной разницы - определить numeric(18,3) или numeric(18,0), для существующего - или конвертация типа столбцов (разово, но, возможно, медленно) или преобразование значений.
Можно на стороне базы, можно через длинную арифметику на стороне ява-кода.
По трудозатратности - не могу оценить, но вряд ли возня с рефакторингом double существенно проще.

P.S. В финансовой арифметике "удобно" только сложение-вычитание.
Как только начались проценты - прощай, оружие простота.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325160
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, myton

Оригинальное обсуждение точности знаков после запятой от топикстартера на целом типе Long :)

Вы бы как-нибудь к земле поближе с небес спустились что ли
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325368
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBezВы бы как-нибудь к земле поближе с небес спустились что лиПочитайте про числа с фиксированной запятой.
Может тогда начнёте понимать тривиальные вещи.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325429
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, 18 десятичных цифр - не вариант. Кстати предлагаю узнать следующий
вопрос. Откуда у MS-SQL и Oracle в decimal, numeric, number появилось действующее
ограничние в 38 десятичных разрядов. Думаю что эта цифра не с неба упала.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325495
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovsanBezВы бы как-нибудь к земле поближе с небес спустились что лиПочитайте про числа с фиксированной запятой.
Может тогда начнёте понимать тривиальные вещи.

Срочно бегу учиться тривиальным вещам! :)

Может еще совет дадите как реализовать в гипотетической биллинговой (финансовой) системе вычисления без деления и умножения? С использованием только целого long.

Или приведете пример системы с тарифами, в которой достаточно только сложения и вычитания.

Пока вышесказанное вами насчет использования long похоже на описание сферического коня в вакууме.
P.S. А почетное звание теоретега здесь не котируется
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325535
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, sanBez!

> Может еще совет дадите как реализовать в гипотетической биллинговой
> (финансовой) системе вычисления без деления и умножения? С
> использованием только целого long.

А в чём проблема использовать умножение и деление, считая в 0.1
копейках? Всё одно каждая операция должна округляться до копеек.

> Пока вышесказанное вами насчет использования long похоже на описание
> сферического коня в вакууме.

У меня был опят написания модуля расчётов на long. Единица- 1/10
копейки. Зато считало реально быстро.

PS: считались долги абонентов, поэтому ссылка на бюджет страны с
гиперинфляцией не катит.

--
Алексей
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325591
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_SamaraА в чём проблема использовать умножение и деление, считая в 0.1
копейках? Всё одно каждая операция должна округляться до копеек.


Не всегда.
У меня сейчас не копейки, а Квтч. Чел сидит, делает. Но например: переходящий остаток на следующий месяц в 0.3 кВтч,
который может быть с плюсом или с минусом (в зависимости от округления в бОльшую или меньшую сторону: исходные значения например 1.7 или 2.3) надо учитывать.
Гемора с вычислениями в целых мне что-то кажется много будет.

GKS_SamaraУ меня был опят написания модуля расчётов на long. Единица- 1/10
копейки. Зато считало реально быстро.


А что ты с целочисленным делением делал? Интересно, как реализовал. Там же обрезалочки идут
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325611
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBezА что ты с целочисленным делением делал? Интересно, как реализовал. Там же обрезалочки идутТоже мне бином ньютона ...
Прибавили к делимому половину масштаба (5, 50 и т.д.) - получите "деление с округлением".

P.S. Для масштаба равного единице - да, не работает.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325620
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBezМожет еще совет дадите как реализовать в гипотетической биллинговой (финансовой) системе вычисления без деления и умножения? С использованием только целого long.Натурально, с использованием положенных четёрых действий арифметики и масштабированием всех коэффициентов до целых.
Для "процентовок" это, опять-таки, будет тысяча, т.к. ставок менее одной сотой процента, вроде, не бывает.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325625
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov всех Поправка высоты чёрточки.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325626
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, sanBez!

>> А в чём проблема использовать умножение и деление, считая в 0.1
>> копейках? Всё одно каждая операция должна округляться до копеек.
>
> Не всегда.
> У меня сейчас не копейки, а Квтч. Чел сидит, делает. Но например:
> переходящий остаток на следующий месяц в 0.3 кВтч,

Тем не менее можно постановить, что числа меньше 0.001 кВт*ч не
учитываются. И считать в 0.0001 кВт*ч.

>> У меня был опят написания модуля расчётов на long. Единица- 1/10
>> копейки. Зато считало реально быстро.

> А что ты с целочисленным делением делал?

Тупо в лоб:
Код: sql
1.
2.
3.
nround(long value) {
  return (value+5)/10 * 10;
}



И далее после деления его вызывать.

Код: sql
1.
perMonthPayment = nround(allPayment /12);



Вопрос, правда, в том, не является ли это преждевременной оптимизацией -
а то м.б. лучше использовать BigDecimal и не мучатся.

Но у меня проект был тестовым на тему "насколько java быстра", поэтому я
выжимал все соки :)

--
Алексей
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325640
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonBasil A. Sidorov, 18 десятичных цифр - не вариантПлохо вам.Откуда у MS-SQL и Oracle в decimal, numeric, number появилось действующее
ограничние в 38 десятичных разрядов. Думаю что эта цифра не с неба упала.Ну ограничение (какой-то стандартной) реализации.
Похоже на "long два разА" - вполне разумный компромисс между "надо много" и "надо быстро".
В REXX я ставил "numeric digits 2000" и вполне быстро получал ответ из этих самых тысяч цифр. Арифметика там именно десятичная. Пределом (по исчерпанию системных ресурсов), в моём случае, было что-то около четырёх тысяч цифр.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325644
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_Samara
Вопрос, правда, в том, не является ли это преждевременной оптимизацией -
а то м.б. лучше использовать BigDecimal и не мучатся.

Но у меня проект был тестовым на тему "насколько java быстра", поэтому я
выжимал все соки :)



Сравнивал BigDecimal и свой результат? Насколько выигрыш получил?

Меня пока BigDecimal устраивает, сейчас не слишком большие объемы вычислений.
По сравнению с вытаскиванием из базы мизер, насколько я помню (проект давнишний).

Я так на будущее, может соломку где заранее подстелить...
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325649
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ещё вариант с упаковкой девяти десятичных цифр в int32 как "три группы по десять бит".
Вроде даже стандартизирован.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325659
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, sanBez!

> Сравнивал BigDecimal и свой результат? Насколько выигрыш получил?

Нет, не успел. Кризис настал, проект свернулся.

> Меня пока BigDecimal устраивает, сейчас не слишком большие объемы
> вычислений.
> По сравнению с вытаскиванием из базы мизер, насколько я помню (проект
> давнишний).
>
> Я так на будущее, может соломку где заранее подстелить...

Опиши Num extends BigDecimal, а если надо -
поменяешь на Num extends Long.

--
Алексей
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325668
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ REXX я ставил
Ради интереса - в каком году это было?
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325688
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_SamaraОпиши Num extends BigDecimal, а если надо -
поменяешь на Num extends Long.


А зачем тогда при BigDecimal аналог твоего nround ? Тут так напрямую не очень красиво выйдет.

Ладно, придут проблемы, тогда и буду решать. А пока не стоит заниматься преждевременной оптимизацией :)
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38325694
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪРади интереса - в каком году это было?Район нулевых. С разбросом на пару лет в обе стороны.
Что-то вроде AMD K6-2/300МГц/32Мб или 64Мб. OS/2.
Считался, если правильно помню, факториал пятидесяти. Естественно, в цикле, а не рекурсивно.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38327392
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokеще топикстартеру можно загуглить ieee-754 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1033182&msg=14523312
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38327394
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из всех присуцвующих только Basil A. Sidorov говорит дело о длинном лонге
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38331459
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. А где есть?

Ну, не знаю... Transact SQL, Pl/SQL, С++ (в виде пользовательского типа, как расширение), common lisp, python

2. Что ещё предложите встроить?

Предложу разрешить расширять Javа своими типами, как в С++, common lisp, python, C#,
это как минимум.

А так замечу, что Java -- язык для программирования бизнес-логики корпоративных приложений. Это по факту.
По рождению -- конечно, это язык для программирования утюгов и холодильников, в таком языке, безусловно, точная десятичная арифметика не нужна. А вот в языке для программирования бизнес-логики корпоративных приложений обязана быть поддержка для
точной десятичной арифметики, встроенная.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38331463
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДайте в Java примитивный тип decimal и все будут рукоплескать. Унылое бормотание теоретиков на тему
того что дескыть неконцептульаненько и некрасивинько никого не будут волновать.

Что может быть неконцептуального или некрасивого в возможности расширять язык пользовательскими типами?
Если они конечно будут полными аналогами встроенных типов.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38332022
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivmaytonДайте в Java примитивный тип decimal и все будут рукоплескать. Унылое бормотание теоретиков на тему
того что дескыть неконцептульаненько и некрасивинько никого не будут волновать.

Что может быть неконцептуального или некрасивого в возможности расширять язык пользовательскими типами?
Если они конечно будут полными аналогами встроенных типов.
Это старый боян который я периодически достаю из чулана. И играю
вальс - На Сопках Манчжурии. Забавно но олдскуль-генерейшн программеров
которые знали что такое С++ стало меньше. Приходят студенты которые
учились уже на Java. И они не то чтобы не знают про перегрузку операций.
У них НЕТ СОМНЕНИЯ в том что инфиксные операции это плохо. Потому
что дядька Госклинг или дядька Эккель так сказали.

Я им говорю. - Раскройте глаза! Откройте учебник математики.
А теперь откройте свой java исходник там где вы выгружаете
BigDecimal из БД и пытаетесь с ним делать какие-то расчёты.

Но ничего. На горизонте Scala.

Ладно я устал. Иду заваривать чай.
...
Рейтинг: 0 / 0
Арифметика Джавы. WTF?
    #38332118
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

не понял нифига.
Что ты хотел сказать, кроме того, что поросль недозрела?
...
Рейтинг: 0 / 0
53 сообщений из 53, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Арифметика Джавы. WTF?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]