【发布时间】:2014-08-25 23:06:53
【问题描述】:
在 C 语言中,如果一个数除以自身,你能超过 1.0 吗?基本上,x/x(例如 5.1/5.1)最终会大于 1.0 吗? x 可以是 float、double 或 long double。请注意,x/x 不会是文字代码,就像变量 x 本身一样。
我尝试搜索此答案,但很难找到好的搜索词。
【问题讨论】:
-
这里可能有 1000 个关于浮点精度的问题。还有指向What Every Computer Scientist Should Know About Floating-Point Arithmetic的必填链接
-
我很清楚浮点的问题,因此是特定的问题。寻找这个特定问题的答案的问题是我得到了大量的“不要做(5/2 == 2.5)”。我知道这一点,但是很难弄清楚一个数字本身是否永远不等于 1.0(可能是由于类型提升的差异或谁知道)。我正在阅读您发送的链接,但看起来并不乐观。
-
@KenWhite 您链接到的文档与此处提出的具体问题无关。它描述了在 IEEE 754 或类似 IEEE 754 的浮点运算中 x/x 如何恰好是 1.0。问题是关于在 C 中会发生什么。整个问题取决于 C 编译器必须在多大程度上实现 IEEE 754 算术,而您链接到的文档对此只字未提。一个 100 多页的链接只提供可以用一句话概括的相关信息是没有帮助的。
-
你到底在问什么? “注意 x/x 不会是文字代码,就像变量 x 本身一样”是什么意思?
-
@Ryan:什么样的人?人类知道浮点运算的工作原理吗?
标签: floating-point floating-point-precision