Не сравнивайте числа с плавающей запятой для равенства
Проблема заключается в том, что ни 0,3, ни 0,9 не имеют точного представления 1 в формате с плавающей запятой, и поэтому при умножении 0,3 * 3вы получаете число, очень, очень близкое к 0,9, которое округляется до 0,9 для печати, но не 0,9.
И ваша постоянная 0,9 также не точно равна 0,9, и эти два числаочень немного отличается.
Использование точных сравнений равенства для чисел с плавающей запятой обычно является ошибкой на любом языке.
1.Все целые числа примерно до 2 52 имеют точные представления FP, но дроби состоят из последовательности 1/2 n членов, Большинство десятичных дробей строк повторяются в базе 2.