Comments 8
Можете пояснить эту конструкцию?
if ($this->isNegative()) {
// 14 is the magic precision number
$number = bcadd($number, '0', 14);
if ('.00000000000000' !== substr($number, -15)) {
$number = bcsub($number, '1', 0);
}
}
0
Эмпирически подобранная логика для округления отрицательных чисел к меньшему значению (floor). Подобный подход применяется еще в нескольких местах для оптимизаций и/или упрощения кода.
Точность здесь учитывается только до 14 знака после запятой. Можно точнее, но вроде бы нет смысла.
Такая же логика и для положительных чисел при округлении в верхнюю сторону (ceil).
Точность здесь учитывается только до 14 знака после запятой. Можно точнее, но вроде бы нет смысла.
Такая же логика и для положительных чисел при округлении в верхнюю сторону (ceil).
-3
Эмпирически подобранная логика в мат. библиотеке? Кхм… Почему-то вспомнился бородатый анекдот о военной кафедре и значении синуса, которое в военное время может достигать трех. Не обижайтесь только, это просто шутка конечно же. Удачи в дальнейшем совершенствовании вашей библиотеки.
+1
UFO just landed and posted this here
Нет, такого не планировалось. Погрешность еще и копится с каждой новой операцией. Не проще задать заведомо хороший запас точности? Тогда мелкие погрешности теряются при округлении результата до требуемой точности.
0
Sign up to leave a comment.
AzaMath — Cистемы счисления (включая кастомные) + арифметика произвольной точности на PHP