Из стандарта С (1999):
6.3.1.4. Действительное и целое число
1 Когда конечное значение реального плавающего типа преобразуется в целочисленный тип, отличный от _Bool,
дробная часть отбрасывается (то есть значение усекается до нуля). Если значение
неотъемлемая часть не может быть представлена целочисленным типом, поведение не определено.
Из стандарта C ++ (2003):
4.9 Плавающие-интегральные преобразования [conv.fpint]
1 R-значение типа с плавающей запятой может быть преобразовано в R-значение целого типа. Преобразование усекается;
то есть дробная часть отбрасывается. Поведение не определено, если усеченное значение не может быть
представлены в типе назначения. [Примечание: если тип назначения - bool, см. 4.12. ]
Скорее всего, ваш двойник слишком большой, чтобы его можно было правильно преобразовать в int.