
Я тестирую числа, кратные 0,4, в Excel.
=MOD(1,2;0,4)
возвращает 0,4, хотя должен возвращать ноль.
решение1
Причина в том, что Excel внутренне работает с числами с плавающей точкой.
Это означает, что 0,4 внутренне представлено как последовательность битов справа от десятичной точки, которая представляет 1/2, 1/4, 1/8, 1/16 и т. д., примерно до 1/(2^31).
Поэтому, все, что естьнетцелое число (и не являетсяточнопредставимая дробями, перечисленными выше) имеет связанную с ней ошибку округления; это относится также к каждому шагу расчета.
MOD(*,0.4)
это всего лишь один пример, демонстрирующий это (довольно вопиющий, я вам скажу).
По сути,вы не можете надежно использовать MOD
нецелые числа в качестве второго параметра. Вам нужно умножить и разделить ваши данные соответствующим образом, если это возможно (например =MOD(10*x;10*m)/10
, ), или самостоятельно закодировать формулу MOD: =x-INT(x/m)*m
.