Хотя float
поддерживает более широкий диапазон значений, чем unsigned int
, он делает это с меньшей точностью. Float имеет 23-битную мантиссу, которая, как вы писали, составляет всего около 7 десятичных цифр. целые числа без знака поддерживают более 9 десятичных цифр.
Предложение: используйте double
, а не float
.
Edit:
На самом деле, я убираю это предложение; Типы данных с плавающей точкой и целые числа принципиально различны и не могут быть напрямую преобразованы. Какое целочисленное значение вы ожидаете получить за Single.MaxValue
? Для Single.NegativeInfinity
? Было бы полезно объяснить, почему вы хотите конвертировать из float
в int
.