Если задано число с плавающей запятой по основанию 10, например 0,583*10^3, можно ли преобразовать это число в эквивалентную форму по основанию 2 x*2^y путем отдельного преобразования дроби (0,583) и показателя степени (3) в базу 2? Если да, то как я могу продемонстрировать это? Большое спасибо за Вашу помощь!
Можно ли преобразовать число с плавающей запятой по основанию 10 в эквивалентное по основанию 2 число?
Ответы (1)
Не все числа с плавающей запятой по основанию 10 можно точно преобразовать в число с плавающей запятой по основанию 2. Например, 0.2
может быть точно представлено в формате с плавающей запятой по основанию 10, но не может быть представлено в формате с плавающей запятой по основанию 2 с конечным числом цифр 0.001100110011001100110011001100110011001100110011001101...
, которое округляется примерно до 0.200000000000000011102230246251565404236316680908203125
.
Связанная статья: Почему десятичные числа не могут быть представлены точно в двоичный.
Если вас просто интересует приближение, существуют различные библиотеки, которые могут сделать это за вас. Например, atof("3.14")
в C
преобразует строку цифр в собственное представление с плавающей запятой вашей машины, из которого вы сможете извлечь двоичные цифры.