问题描述
我想将浮点数结束存储值的 10 位移位为整数。但是我有一个问题。
int main() {
using namespace std;
int lastValue;
float myNum = -29.33;
lastValue = myNum * (1 << 10);
cout << lastValue << endl;
}
然而 lastValue
是 false
,我哪里错了?
解决方法
lastValue
被定义为 int
。如果是 false
,则其真值为 0
,否则为 true
。
lastValue = myNum * (1 << 10);
被评估为:
lastValue = (int)(myNum * (float)(1 << 10));
产生 (int)(-29.33F * 1024.0F)
,因此大约 (int)-30033.92
。
输出应该是 -30033
,如果在测试中使用,则为 true。