математика — PHP Подразделение Float Value Issue

Когда я пытаюсь получить остаток, он дает недопустимое значение. Я пытаюсь получить остатки двух десятичных значений, и я получаю

3.4694469519536E-18

Мои ценности

 $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 Float Value WorkAround

3

Решение

% Оператор просто работает с целыми числами, поэтому он усекает ваши числа с плавающей точкой до целых чисел и пытается сделать 0 % 0, что приводит к делению на ноль.

Единственное, что вы можете использовать, это fmod(), Проблема, с которой вы здесь сталкиваетесь — это типичная неточность с плавающей запятой (значение «почти» равно нулю) Я хотел бы просто игнорировать значения меньше 10 ^ -15. В PHP нет реальной альтернативы этому.

То, что вы могли бы попытаться сделать, это сделать реальное разделение, а затем, если повезет, следы неточности исчезнут. (лайк round(0.1 / 0.005) === 0.1 / 0.005)

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector