Строка, чтобы плавать против двойного преобразования - PullRequest
2 голосов
/ 31 марта 2011

Почему fvalue1 123456792 после выполнения следующей строки кода?

float fvalue1 = Convert.ToSingle("123456789", CultureInfo.InvariantCulture);

Преобразование в удвоенные значения работает, как ожидается:

double dvalue1 = Convert.ToDouble("123456789", CultureInfo.InvariantCulture);

Ответы [ 2 ]

4 голосов
/ 31 марта 2011

Вы только что обнаружили для себя причину, по которой существует двойной тип - его точность лучше, чем у числа с плавающей точкой.

Проверьте следующие различия между этими типами: Разница между десятичными, числами с плавающей точкой и двойными в.NET

3 голосов
/ 31 марта 2011

float не имеет необходимой точности для представления 123456789, в то время как double имеет.

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