|
|
1
65
检查您的math.h文件。如果你幸运的话,你有
另一种方法(可能是后备解决方案)是将浮点分解为尾数和指数部分。递增很容易:只需在尾数上加一个。如果出现溢出,则必须通过增加指数来处理。递减也是如此。
简而言之,这和nextafter做的事情是一样的。 不过,这不会是完全可移植的。您必须处理endianess和并非所有机器都有IEEE浮点的事实(好的,最后一个原因更具学术性)。
|
|
|
2
23
是的,说真的。
|
|
|
3
6
就绝对值而言,可以添加到浮点值以生成新的不同值的最小量将取决于该值的当前大小;这将是该类型的 machine epsilon 乘以当前指数。 查看 IEEE spec 用于浮点表示。最简单的方法是将该值重新解释为整数类型,添加1,然后检查(如果您愿意)是否没有翻转符号或通过检查符号和指数位生成NaN。 frexp 获取当前尾数和指数,从而计算要添加的值。 |
|
|
4
2
|
|
|
5
0
值得一提的是,标准++递增停止工作的值是9007199254740992。 |
|
|
6
0
这可能不是你想要的,但你仍然可以找到 numeric_limits 正在使用中。尤其是min()和epsilon()成员。 我不相信像mydouble+numeric_limits::epsilon()这样的东西会做你想做的事情,除非mydouble已经接近epsilon了。如果是的话,那么你很幸运。 |
|
7
-2
我不久前发现了这段代码,也许它可以帮助你确定你能推它的最小值,然后再增加这个值。不幸的是,我记不起此代码的参考:
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |