Wil*_*ing 5 c++ floating-point underflow
我正在尝试理解C++数值属性.因此,我对下溢现象感兴趣.任何人都可以给我一个下溢的例子以及如何处理它?
浮点下溢的一个例子是:
double d = DBL_MIN / 3.0;
Run Code Online (Sandbox Code Playgroud)
符合IEEE 754的实现应该设置d为" 低于正常 ",即一个接近于零的数字,精度会降低.您将在维基百科上找到大量信息.
一些实现可能"刷新到零".上例中的结果是设置d为零.
下溢是较大的负指数无法表示数字的结果.有时可以通过"规范化"计算来避免它们,这相当于以某种方式计算x 1*2 N,x 2*2 N,...而不是x 1,x 2,......对于您选择的N.
浮点下溢不是未定义的行为.如果您愿意,可以使用"FPU例外"通过轮询或接收SIGFPE来检测它.请注意,除了名称之外,"FPU异常"与C++异常没有任何共同之处.