1
7
我不知道你说的是什么意思
归一化
两倍的号码,但下一个
可表示的
双编号完成
|
2
5
正如robert kern所指出的,您需要c nextafter()函数,或者ieee754 nextup()和nextdown()函数,尽管这两个函数还没有广泛实现。 如果您出于某种原因想要避免下一个员工,您可以这样做:
这会将2^(x-52的指数)加到x上,x在最后一个位置(ulp)正好是一个单位。 如果没有可用的常规cmath函数:
这将通过对浮点值的位表示进行操作,将一个值添加到x的有效位;如果下一个值位于下一个二进制代码中,则这将进入指数,返回正确的值。如果你希望它对负值有效,你需要调整它。 |
3
3
3)项下的陈述是错误的。如果d略小于2,则d和(1+eps)*d之间正好有1个浮点数。下面是一个程序来显示它:
原因是(1+eps)*1.875等于1.875+1.875*eps,四舍五入为1.875+2*eps。但是,1和2之间的连续浮点数的差是eps,所以1.875和1.875+2*eps之间有一个浮点数,即1.875+eps。 我认为2)项下的陈述是正确的。罗伯特·克恩可能回答了你真正的问题。 |
4
1
如下面所述,经过一小部分的研究,发现对于英特尔IEEE754格式的n位正浮点数,<+无穷大将连接的指数和有效位视为n-1位无符号整数,加上一个得到下一个更高的值(减去一个得到下一个更低的值)。 反之亦然。特别地,我们可以将n-1位整数解释为表示与符号无关的绝对量值。因此,当负浮点数f之后,必须减去1才能使下一个浮点数接近零。 |
5
0
1.0-epsilon不是1.0的前身,因此负计数器部分根本不起作用…
|
Rik Bloemers · for循环不接受任何浮点变量 2 年前 |
zell · 为什么存储7个浮点数需要34字节? 2 年前 |
Atharva Sunil Sathe · 如何删除任意数的小数点? 2 年前 |
user1658887 · 为什么**2!=a*a一些彩车? 6 年前 |