Когда я попробую получить остаток, он дает недопустимое значение. Я пытаюсь получить оставшиеся два десятичных значения, и я получаю
3.4694469519536E-18
- Вычисление n-го корня целого числа с использованием PHP / GMP
- PHP / GD - обрезка и изменение размеров изображений
- Ищите GCD (наибольший общий делитель) из более чем двух целых чисел?
- Функции для округления и округления фракций с точностью в PHP, любой лучший способ сделать это?
- Форма визуализации в PHP - Как создать более сжатый рендер?
Мои значения:
$x=0.1; $y=0.005;
Я попробовал следующее:
echo $ed = fmod(0.1,0.005); OutPut:3.4694469519536E-18 echo $ed = ((floatval(0.1)) % (floatval(0.005)));
Но получение
Warning: Division by zero
Но Реальность 0.1 будет делить на 0,005 в 20 раз. т.е. 0.1/0.005 = 20
Эта же функция возвращает правильное значение, когда я использую 10%1 = 0
.
Как я могу получить точный остаток. (Я не сталкиваюсь с той же проблемой в JQuery :))
Проверка работы: PHP Division Float Value WorkAround
Оператор %
работает только с целыми числами, поэтому он обрезает ваши поплавки целыми числами и пытается сделать 0 % 0
, что приводит к делению на ноль.
Единственное, что вы можете использовать, это fmod()
. Проблема, с которой вы сталкиваетесь здесь, – это типичная неточность с плавающей запятой (значение «почти» равно нулю). Я хотел бы просто игнорировать значения меньшие, чем 10 ^ -15. В PHP нет реальной альтернативы этому.
То, что вы могли бы попробовать, это сделать реальное разделение, а затем, с небольшим количеством удачи, исчезают следы неточности. (например, round(0.1 / 0.005) === 0.1 / 0.005
)