Сравнение значений с плавающей точкой с точностью сохранения
сравнение с плавающей точкой создает проблему из-за потери точности. Просто сравнивать удвоение или поплавки, используя ==, ненадежно.
сравнение на основе Эпсилона
один подход включает в себя использование порога Epsilon (ε) для учета точной потери:
bool CompareDoubles2(double A, double B) { double diff = A - B; return (diff, однако, этот подход может быть неэффективным.
контекстно-зависимые соображения
выбор метода сравнения зависит от контекста и ожидаемых значений. Рассмотрим следующие потенциальные подводные камни:
std :: numeric_limits
] использование двойных для удержания целочисленных значений может привести к правильной арифметической, так как доля или значения за пределами диапазона целого числа. Например, 4.0/2.0 будет равным 1,0 1.0. ]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3