Компьютеры просто не работают таким образом, по крайней мере, если они не запрограммированы на это. Предположение, что число, которое вы им даете, является точным. Если вы создадите число 2/3 как 0,6666666666666667, то все операции будут обрабатываться именно так. Эта ошибка в младшей значащей цифре может в конечном итоге распространиться на более крупные ошибки в последующих вычислениях, но с этим должен справиться хороший код, используя алгоритмы, которые минимизируют эти проблемы, когда это возможно.
Как я уже сказал, компьютеры делают то, что им говорят. Итак, написаны пакеты, которые используют так называемую интервальную арифметику. Затем число может быть описано как интервал, поэтому мы можем создать 2/3 как интервал [0.6666666666666666,0.6666666666666667]. Мы можем работать с интервалами, складывая, вычитая, умножая и т. Д. Эти операции часто видят увеличение ширины интервалов, когда мы работаем с ними.
Однако факт заключается в том, что даже если вы используете интервальные арифметические инструменты, именно вы должны знать в начале количество значащих цифр в ваших числах. Если вы создадите число как 2.2, сохранив его как двойное, то компьютер фактически попытается сохранить число как 2.200000000000000 и предположить, что все цифры в точности верны. На самом деле, конечно, поскольку используется арифметика с плавающей запятой, число фактически будет храниться внутри как двоичное число. Таким образом, 2.2, вероятно, будет эффективно храниться как число:
2.20000000000000017763568394002504646778106689453125
потому что большинство десятичных дробных чисел не представлены точно в двоичной форме. Опять же, осторожность должна применяться ко всему программному обеспечению, но также всегда человеку, который использует эти инструменты, чтобы понять, что на самом деле означают их цифры.
Этот последний пункт важен. Многие люди относятся к числам, сгенерированным компьютером, как к истине, как сообщается богом компьютеров на каменном планшете. Если компьютер печатает 1.4523656535725, они верят каждой цифре того, что они видят. На самом деле, здесь должен применяться здравый смысл, чтобы знать, что, возможно, это число было сгенерировано из данных, которые имели только 3 значащих цифры, так что вы можете полагаться только на первые несколько значащих цифр этого числа. И, конечно же, именно поэтому вас учат этой концепции в школе, знать, чему доверять, а чему не доверять. Однако помните - компьютеры, как правило, будут бесконечно доверять. Это вы должны применить фильтр.