Сравнение чисел с плавающей точкой
Запись от EvgeniyT размещена 10.01.2019 в 20:41
Показов 3193
Комментарии 3
Метки c#, double и float в с#
|
Нашёл интересную информацию и что бы не потерять выложу сюда. Читайте как справочник. Типы данных double и float хранят приближённое значение числа, на столько, на сколько хватает их точности. Поэтому нужно быть аккуратным при сравнении таких чисел на равенство. Рассмотрим такой код:
При выполнении этих операций, погрешность накапливается, и это приводит к неверным результатам. Для того, чтобы избежать этого, при сравнивать числа с плавающей точкой нужно с учётом погрешности, вот так:
| ||||||||||
Метки c#, double и float в с#
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 3
Комментарии
-
Это верно для любого языка программирования. Мало того, даже вычисления на бумаге с помощью шариковой ручки подчиняются этому правилу.Запись от wer1 размещена 11.01.2019 в 09:46
-
Да, все верно. Но когда пишешь ручкой на бумаге, обычно это десятичная система счисления, где человеку сразу видны места, в которых будет ошибка округления и ее можно увидеть и учесть.
Сообщение от нтч
А когда пишешь
а = 0.1;
b = 872782577.12544;
c = 10.0;
Ожидаешь, что
a * b * c будет равно b
и даже в голову не приходит по началу, где здесь может быть ошибка.Запись от Orsanka размещена 11.01.2019 в 10:07
-
Вы тысячу раз правы. Если предположить, что число а задано приближенно с абсолютной погрешностью 0,05, то результат умножения будет ошеломителен: 900 000 000. Ведь относительная погрешность первого числа равна 50% (число находится на интервале (0,05; 0,15)). Другими словами, даже первая цифра результата сомнительна.
Сообщение от Orsanka
Запись от wer1 размещена 12.01.2019 в 08:35


