-
(1) Fixed point, decimal, currency (2) Просто то, что ты хочешь, любой программист может легко реализовать на основании целочисленного типа, например, храним сумму не в долларах, а в центах и т. п. В принципе, готовых реализаций over 9000+ Для научных численных вычислений фиксированная точка абсолютно не годиться, потому что часто будем выходить за пределы её точности, например, если брать градиентный спуск, то шаг может быть очень маленьким, например 1e-6, а значение целевой функции очень большим 1e+6. А вся точность десятичного представления разбивается о квадратные корни, логарифмы, экспоненты и т. п.
Хотя фон Нейман в своё время утверждал, что программистам достаточно фиксированной точки, а уже любой вменяемый программист легко сможет на её основе реализовать представление в виде мантиссу/экспоненты наиболее эффективное для данного алгоритма. Ну и если брать классику типа Уилкинсон Дж.Х., Райнш С. Справочник алгоритмов на языке Алгол. Линейная алгебра, то там часто можно встретить в коде как раз ручную работу с мантиссой/экспонентой.
-
Fixed point не то. Хочется плавающую точку.
-
храним сумму не в долларах, а в центах
но тут внезапно появляются проценты.
-
> Хочется плавающую точку.
Зачем? Как только происходит потеря точности, сразу становится неважным, как у тебя представлены числа. А в финансовых приложениях вряд-ли будет большо́й диапазон значений, 64 бита даст тебе примерно 18 порядков, для доллара получаем триллион это 1e+12, следовательно у нас ещё будет 6 знаков после точки. Также нет проблем в использовании 128 бит (ещё 18 порядков).
Если брать Ethereum VM, там все суммы представлены 256-битными числами, 1 ETH это 1e+18 wei (минимальная единица). Такой точности всем более чем достаточно.
-
Хочешь повторить тот случай, когда работник банка подсунул софтинку которая все эти хвостики переводила на его счет ? )
-
> KSergey © (27.02.19 13:26) [21] > > Fixed point не то. > Хочется плавающую точку. см. аналог BigDecimal в java
хоть сто тыщь после запятой
-
> ВладОшин © (27.02.19 17:38) [24] > Хочешь повторить тот случай, когда работник банка подсунул > софтинку которая все эти хвостики переводила на его счет ? )
Это-то как раз просто, вытекает из самой природы всей этой проблемы, и это как раз так у меня и работает. А вот как сделать, чтобы не переводила - вот над чем бьюсь. И чета без особого успеха.
-
>А вот как сделать, чтобы не переводила - вот над чем бьюсь. И чета без особого успеха. Я округлял одну часть значения в нужную сторону, а вторую получал вычитанием от округленного. Вполне рабочий вариант. За 10 лет налоговая ничего не вернула на пересчет.
-
-
> [5] Styx © (27.02.19 11:08) > И проблема не в использовании степеней двойки в компьютере, > а в использовании степеней десятки в быту.
Это точно подмечено - бэд дизайн. Правильно надо было сделать по 1 пальцу на каждой руке, как компромисное решение можно было сделать по 4 или даже по 8 тоже неплохо. Но решения с двумя руками всё-таки не универсальны, например, они неудобны в архитектуре DEC процессоров, где надо на одну руку делать 4 пальца а на другую 3, что усложняет модель и добавляет лишние сущности и ассиметрию. Самое универсальное решение 1 рука, тогда пространство вариаций с количеством пальцев раширяются от 1 и до неких разумных величин, поределяемых типовими архитектурами процессоров.
-
-
-
> [31] Inovet © (01.03.19 17:02)
Да. смайл подразумевался.:)
|