Проблема с плавающей стоимостью PHP-подразделения

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

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

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

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

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