powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / выбор типа данных для работы с money
11 сообщений из 11, страница 1 из 1
выбор типа данных для работы с money
    #32704636
JGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из базы данных вытаскиваю поле с суммой(в Vector)
Дальше нужно сложить все эти суммы с другими числовыми значениями.

Если перевожу данные в float, то считает не точно.

Какой тип данных лучше всего использовать?

Спасибо за помощь
...
Рейтинг: 0 / 0
выбор типа данных для работы с money
    #32704712
JGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И какой класс нужно использовать для работы с датами?
Date - depricated.
А что использовать вместо него?:
...
Рейтинг: 0 / 0
выбор типа данных для работы с money
    #32704740
^ozzy^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JGuestИз базы данных вытаскиваю поле с суммой(в Vector)
Дальше нужно сложить все эти суммы с другими числовыми значениями.

Если перевожу данные в float, то считает не точно.

Какой тип данных лучше всего использовать?

Спасибо за помощь

ИМХО double
...
Рейтинг: 0 / 0
выбор типа данных для работы с money
    #32704765
JGuest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если double, то он что-то странное творит вместо допустим 345,56 пишет
345,5556767
...
Рейтинг: 0 / 0
выбор типа данных для работы с money
    #32705138
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с деньгами работать через double - дурдом.
15 знаков десятичных дает мантисса и все.
быстро нарветесь на ошибки округления, потерю точности и т.п.
см. BigDecimal со всеми вытекающими.
Decimal Arithmetic FAQ

авторА если double, то он что-то странное творит вместо допустим 345,56 пишет
345,5556767

А вот это странно.
ну когда в 15м знаке врет - это естественно эффект от binary float point.
но чтоб вот так вот...
примерчик есть?
...
Рейтинг: 0 / 0
выбор типа данных для работы с money
    #32705290
^ozzy^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрейс деньгами работать через double - дурдом.


Почему "дурдом" ? Правда, интересно Ваше мнение.
...
Рейтинг: 0 / 0
выбор типа данных для работы с money
    #32705691
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Double предназначен для научных вычислений а не для финансовых.
Хотя диапазон у него достаточно велик но точность плавает. То есть
прибавляя небольшое целое число к большому вещественному можно
попасть в ситуацию когда суммирование не дает эффекта (мантисса
переполнилась) хотя диапазон double еще не исчерпан. Разумеется
для бухгалтерии это не приемлемо!
-Можно использовать встроенный тип int или long и считать все в копейках. А при выводе
форматировать с учетом двух дробных знаков.
-Можно использовать класс BigDecimal как предлагает Зорин Андрей.
...
Рейтинг: 0 / 0
выбор типа данных для работы с money
    #32705733
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага. Главное что в копейках получается больше :)
...
Рейтинг: 0 / 0
выбор типа данных для работы с money
    #32705776
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потеря точности из-за невозможности точного представления десятичного числа средствами двоичной арифметики с плавающей точкой.
(так же как невозможно точно представить 1/3 в десятичной системе)
см. из приведенного FAQ второй вопрос - пример с 70 центовым звонком и 5%налогом.
В готовой системе крайне неприятно отлавливать подобные ошибки когда они проявляются в виде несошедшегося на несколько центов консолидированного баланса - объем исходной информации при этом может быть сотни тысяч записей.

Нехватка разрядности - скромную сумму в 10млн. евро не удастся представить в турецких лирах с точностью до второго знака после запятой.

Вообще-то этим граблям уже лет 50 как минимум ;-)
COBOL и PL/I могли работать с настоящими десятичными числами произвольной разрядности natively.
В первых версиях COBOL вообще не было арифметики с плавающей точкой (зачем она бухгалтерам?).
И IBM производил когда-то процессоры которые способны были считать в том числе и в десятичной системе без преобразования в binary floating point.
( думаю и сейчас производит - они никогда ничего не выбрасывают ;-)
Так что в некотором смысле с тех пор железо деградировало.
По крайней мере в нынешних Intel-ах подобные вычисления если и делаются то "не в железе", а "софтверно".
...
Рейтинг: 0 / 0
выбор типа данных для работы с money
    #32705789
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton-Можно использовать встроенный тип int или long и считать все в копейках. А при выводе
форматировать с учетом двух дробных знаков.

Не поможет. если я торгую спичками по 1коп. и должен с них платить налог 18%, то рано или поздно вылезут "лишние" копейки.
Надо иметь резерв в несколько разрядов чтоб с округлением не было проблем.
...
Рейтинг: 0 / 0
выбор типа данных для работы с money
    #32705939
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется в Borland C++ Bulder был тип данных cardinal. Там как раз была фиксированная разрядная сетка и 4 знака после запятой.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / выбор типа данных для работы с money
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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