У меня есть число с плавающей запятой, которое логически делится на другое число с плавающей запятой; но Python дает мне ложное утверждение для этого !?
Я пробовал другие случаи, когда я делил числа с плавающей запятой на другие числа с плавающей запятой, и я заметил, что это работает только тогда, когда десятичные доли для знаменателя равны 0 или 5 !? ... так есть ли способ решить эту проблему и получить истинное утверждение?
56,00 % 11,20 == 0
Результат:
ЛОЖЬ
print(56%11.2) дает 3.552713678800501e-15, так что это не ==0





Во-первых, вы не делаете нормальное деление. Вы делаете то, что называется модульным делением.
Во-вторых, как указано в комментарии @harold, на компьютерах 11.2 может не равняться 11.1999999999999999999999999999; их можно рассматривать как разные числа (проверьте эту ссылку, чтобы увидеть наиболее точное представление 11.2 в двоичном формате). Как видите, 11.1999999999999992894572642399 (двоичное представление для 11.2) не равно 11.199999999999999999999999999 (они отличаются 14-м разрядом)
Вы можете попробовать сделать round(), чтобы заставить его иметь конечное количество десятичных знаков и проверить это.
Попробуй это:
round(56.00 % 11.20, 2) == 0.0
Это должно дать True.
binaryconvert.com/result_double.html?decimal=049049046050
Я сделал неправильную операцию, используя функцию round() перед делением этих двух чисел, и это дало мне ложное утверждение... путем исправления и использования round() после деления это работает и решает мою проблему.
Да, извините, пока я отвечал, мне позвонили по работе, поэтому я разместил ответ без достаточных пояснений...
Учтите, что 11.2 == 11.199999999999999289457264239899814128875732421875