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