Когда вы пишете цифры «0,02» в исходном коде, компилятор или интерпретатор использует их с плавающей запятой. Наиболее распространенным форматом с плавающей запятой является двоичная с плавающей точкой IEEE 754 с одноточечной или двойной точностью.
Этот формат с плавающей запятой не может точно представлять большинство десятичных цифр. Например, так же, как десятичные числа не могут точно представлять 1/3 (это приблизительно 0,3333, но любая десятичная цифра конечной длины заканчивается где-то, поэтому она немного отличается от 1/3), двоичные числа, используемые в плавающей запятой, не могут представлять 1/10 точно (в двоичном, 1/10 - приблизительно .000110011001100110011).
Поэтому, когда вы пишете «0.02-0.01-0.06 + 0.05», компьютер не выполняет арифметику с точно такими числами. Он использует близкие приближения. Таким образом, результат, который вы получаете, близок.
Если вы хотите получить точный результат, вы должны либо изучить детали арифметики с плавающей запятой, чтобы вы могли создавать операции, которые позволяют избежать ошибок или для которых ошибка может быть исправлена, или вы должны использовать только целочисленную арифметику. Например, если вышеуказанные доллары суммы добавляются и вычитаются, вы можете вместо этого хранить суммы пенни и вычислять «2-1-6 + 5».
'эхо (0,06 + 0,05) - (0.02-0.01); '= 0,1 –