>> ДЭВИД Малан: Давайте теперь сразит вас наповал.
Оказывается, в реальном мире 1 разделенного на самом деле 10 1/10 или 0,1.
Но в компьютерах, только конечное Число битов, с которым
представлять числа, вы не можете всегда представлять числа как 1/10 с
идеально точность.
Другими словами, компьютеры иногда имеют совершать звонки суждения и не
обязательно отражают номер, который вы хочу настолько точно, насколько вы намерены.
>> Например, предположим, я иду обратно в эта программа и изменить 0,1 до,
ой, 0.28, тем самым показывая, что Я хотел бы Printf в Е к
28 мест точности.
Давайте теперь сохранить и скомпилировать программу, на этот раз с макияжем floats2.
Запустите его с точечной слэш floats2.
И, Боже, на этот раз я не вижу 0,1, но 0.10000000, который является довольно
хорошо до сих пор.
Но тогда, 14901161193847656250.
>> Ну, что происходит?
Ну, получается, что поплавок обычно хранится внутри компьютера
с 32 бит.
32, очевидно, конечное число, которое означает, что вы можете только представить
с 32 бит на конечное число из чисел с плавающей запятой.
К сожалению, это означает, что Компьютер не может представлять все возможно
числа с плавающей точкой, или действительные числа, что существует в мире,
потому что это только имеет так много битов.
>> И так, что компьютер это, по-видимому сделано в этом случае представляют собой 1/10 до
ближайший возможно плавающей запятой, это возможно.
Но если мы посмотрим, как мы здесь, по 28 знаков после запятой, мы начинаем видеть, что
неточность.
Так что это проблема с не существует идеального решения.
Мы можем использовать на двоих человек вместо поплавка, который имеет тенденцию использовать 64 бита в качестве
против 32.
Но, конечно, 64 также конечна, так что проблема будет
остаются даже с двойниками.