我编写了以下C++代码来检查下溢。我不确定这是不是一个好的做法。
#include <limits>
#include <iostream>
int main()
{
float d = 1.e-29;
std::cout<<"d: "<<d<<" underflow? "<<(d<std::numeric_limits<float>::min())<<std::endl;
d = 1.e-59;
std::cout<<"d: "<<d<<" underflow? "<<(d<std::numeric_limits<float>::min())<<std::endl;
}打印输出为
d: 1e-29 underflow? 0
d: 0 underflow? 1发布于 2014-04-25 05:46:05
在为变量赋值后,不能通过将其与标准限制进行比较来检查下溢或溢出。
简单的例子:
int v1 = INT_MAX;
int v2 = INT_MAX;
int v3 = v1 * v2;表达式v1 * v2会导致溢出。但是,v3的值仍然是一个有效的int。
您必须在v1 * v2之前执行检查,以确定它是否会导致溢出。
https://stackoverflow.com/questions/23280326
复制相似问题