从'float'到"int32"的C ++转换,可能会丢失数据

c++ conversion from 'float' to 'int32', possible loss of data

本文关键字:数据 float int32 转换      更新时间:2023-10-16

构建此代码返回conversion from 'float' to 'int32', possible loss of data

如何解决它,我乞求学习CPP

uint16 nRandom = Radius;
        if (nRandom <= 0)
            fRandom_X = (float)fX;
        else
            fRandom_X = (float)(myrand((fX - nRandom) * 10, (fX + nRandom) * 10) / 10);
        nRandom = Radius;
        if (nRandom <= 0)
            fRandom_Z = (float)fZ;
        else
            fRandom_Z = (float)(myrand((fZ - nRandom) * 10, (fZ + nRandom) * 10) / 10);
        pNpc->SetPosition(fRandom_X, 0.0f, fRandom_Z);

(将此答案限制为IEEE754。

float无法存储int32可以存储的每个可能值(反之亦然),因此编译器会向您发出有用的警告。

经验法则是不要像这样混合你的类型:使用一种类型并坚持下去。

如果您需要潜入浮点数,那么为了轻松生活(现在可能更快的代码),请使用double而不是floatdouble可以存储int32可以存储的每个值,因此警告将消失。