我有时会从一个函数返回FLT_MAX或FLT_MAX / 2。
我现在必须将这个值转换为int或long int,以便进一步计算。
#define FLT_MAX 3.402823466e+38F // max value
double f = FLT_MAX;
long long int n = static_cast<long long int>(f); // result is -9223372036854775808
我得到了错误的结果:-9223372036854775808!?
我到底需要哪种数据类型?
更新:这是函数,它可能具有很大的价值:
int numPlaces(long int n) {
if (n < 0) return numPlaces((n == INT_MIN) ? INT_MAX : -n);
if (n < 10) return 1;
return 1 + numPlaces(n / 10);
}
1条答案
按热度按时间mlnl4t2r1#
这对我很有效: