Как проверить, может ли число с плавающей запятой быть точно представлено как целое число

Я ищу достаточно эффективный способ определения того, может ли значение с плавающей запятой ( double ) быть точно представлено целочисленным типом данных ( длинный , 64 бит).

Моя первоначальная мысль заключалась в том, чтобы проверить показатель степени, чтобы убедиться, что он равен 0 (или, точнее, 127 ). Но это не сработает, потому что 2.0 будет e = 1 m = 1 ...

В общем, я застрял. У меня есть ощущение, что я могу сделать это с помощью битовых масок, но сейчас я просто не понимаю, как это сделать.

Так как я могу проверить, можно ли точно представить двойное число как длинное?

Спасибо

15
задан ircmaxell 18 January 2012 в 04:36
поделиться