【发布时间】:2014-04-11 03:47:27
【问题描述】:
每个人都知道 C/C++ 中 math.h/cmath 中的 sqrt 函数 - 它返回其参数的平方根。当然,它必须有一些错误,因为不是每个数字都可以精确存储。但是我能保证结果有一定的精度吗?例如,'这是可以用所用浮点类型表示的平方根的最佳近似值or如果你计算结果的平方,它将尽可能接近使用给定浮点类型的初始参数'?
C/C++ 标准是否有相关内容?
【问题讨论】:
-
@Mike,谢谢,但我的问题有点宽泛:我对我保证拥有的东西感兴趣?因为如果根本没有保证,我可以编写一个符合标准的 sqrt(),它总是返回 0 来表示正数。
-
@yeputons:请参阅this answer 链接问题——C/C++ 标准不提供任何保证,但 IEEE-754 规范提供
-
@ChrisDodd 我明白了,这回答了我的问题。非常感谢。
-
@yeputons 有趣的是,您在评论中选择了 0 来表达您的观点。 0 有一个奇怪的
sqrt()属性。 IEEEsqrt(+0.0)--> +0.0 和sqrt(-0.0)--> -0.0.
标签: c precision floating-accuracy math.h sqrt