Предположим, что у нас всегда один и тот же языковой стандарт C.
Можно ли найти такое число с плавающей точкой value
, которое в коде ниже restored_x != value
float x = value;
char s[32];
sprintf(s, "%.6g", x);//do not use snprintf for simplicity
float restored_x = 0.;
sscanf(s, "%g", &restored_x);
Другими словами, янайдите код, который использует %.6g
для сериализации, и, как я знаю, десятичное представление двоичного числа с плавающей запятой не точно 6 цифр после "точки", оно может быть 7 или более.Но я не могу найти такое число (значение! = Restore_x), если оно существует?
Я не принимаю во внимание NaN и + -Inf и т. Д. В особом случае, потому что есть утверждения, которые проверяют ввод вфункция, которая использует %.6g
для сериализации.