我归一化了一个 vector ,它的长度应该是1。但是长度方法的结果是0.99999982
不知道是对是错。但是如果我打印出来,结果是 1。不是 0.99999982(由 cout 打印)
但是 std::cout 如何知道它是 1? [这是我的第一个问题]
还有一个问题是为什么比较函数的结果是false。
我有如下比较方法。 lhs 是 vector 的长度,rhs 刚好为 1。
return (fabsf(rhs-lhs) <= FLT_EPSILON) ? true : false;
此方法的结果为假。
归一化 vector 的长度是否已经错误地被认为是归一化的?还是 epsilon 太小了?
我做错了什么?
最佳答案
epsilon 太小了。这是因为epsilon 是最小的。 (根据定义)
所以你需要更大的公差。
关于c++ - float 错误。 c++怎么知道0.99999982是1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7494260/