Можно ли выразить каждое число с плавающей точкой в ​​точности как двойное число? - PullRequest
15 голосов
/ 03 ноября 2008

Может ли каждое возможное значение переменной float быть точно представлено в переменной double?

Другими словами, для всех возможных значений X будет успешным следующее:

float f1 = X;
double d = f1;
float f2 = (float)d;

if(f1 == f2)
  System.out.println("Success!");
else
  System.out.println("Failure!");

Я подозреваю, что исключения нет, или, если оно есть, это только для крайнего случая (например, +/- бесконечность или NaN).

Редактировать : оригинальная формулировка вопроса вводила в заблуждение (указывалось два способа, один из которых отвечал бы «нет», другой отвечал бы «да» для того же ответа). Я переписал его так, чтобы он соответствовал названию вопроса.

Ответы [ 11 ]

0 голосов
/ 03 ноября 2008

Snark: NaN s будет сравниваться по-другому после (или даже раньше) преобразования.

Это, однако, не делает недействительными уже предоставленные ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...