大家都知道 C/C++ 中的 math.h
/cmath
中的 sqrt
函数,它返回其参数的平方根。当然,由于不能精确存储每个数字,因此它会有一些误差。但我能保证结果具有一定的精度吗?例如,“它是可以表示所使用的浮点类型的平方根的最佳近似值或者
如果计算结果的平方,则使用给定的浮点类型,结果将尽可能接近初始参数”?
C/C++ 标准中是否有相关规定呢?
大家都知道 C/C++ 中的 math.h
/cmath
中的 sqrt
函数,它返回其参数的平方根。当然,由于不能精确存储每个数字,因此它会有一些误差。但我能保证结果具有一定的精度吗?例如,“它是可以表示所使用的浮点类型的平方根的最佳近似值或者
如果计算结果的平方,则使用给定的浮点类型,结果将尽可能接近初始参数”?
C/C++ 标准中是否有相关规定呢?
这个问题已经在这里被回答了,正如克里斯·多德在评论中指出的那样。简而言之:虽然C++标准没有保证,但IEEE-754标准保证结果尽可能接近“真实结果”,即误差小于或等于最后一位的1/2单位。特别地,如果结果可以精确存储,那么就应该这样做。
sqrt()
属性。IEEEsqrt(+0.0)
--> +0.0和sqrt(-0.0)
--> -0.0。 - chux - Reinstate Monica