как всем известно decimal fractions
(например, 0.1), при сохранении как floating point
(например, double или float) будет внутренне представлен в «двоичном формате» (IEEE 754). А некоторые десятичные дроби не могут быть напрямую представлены в двоичном формате.
Чего я не понял, так это точности этого "преобразования":
1.) Сама по себе плавающая точка может иметь точность (то есть "значимую")?
2.) Но также преобразование из десятичной дроби в двоичную дробь имеет потерю точности?
Вопрос:
Какова наихудшая потеря точности (для "всех" возможных десятичных дробей) при преобразовании десятичных дробей в дроби с плавающей запятой?
(Причина, по которой я хочу это знать, заключается в том, что при сравнении десятичных дробей с двоичными / с плавающей запятой мне нужно учитывать точность ... чтобы определить, идентичны ли обе цифры. И я хочу, чтобы эта точность была максимально точной / точной по возможности (decimal fraction == binary fraction +/- precision)
Пример (только гипотетический)
0,1 dec => 0,10000001212121212121212 (binary fraction double) => precision loss 0,00000001212121212121212
0,3 dec => 0,300000282828282 (binary fraction double) => precision loss 0,000000282828282