带浮点数的位移位

问题描述

我想将浮点数结束存储值的 10 位移位为整数。但是我有一个问题。

int main() {
    using namespace std;
    int lastValue;
    float myNum = -29.33;
    lastValue = myNum * (1 << 10);
    cout << lastValue << endl;
}

然而 lastValuefalse,我哪里错了?

解决方法

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。