gpt4 book ai didi

c++ - 存储在静态 const int 中的对数函数的错误返回值 (c++)

转载 作者:搜寻专家 更新时间:2023-10-31 01:15:19 25 4
gpt4 key购买 nike

我注意到我的应用程序中有一件非常奇怪的事情。我的世界类中有两个静态常量整数:

class World
{
public:
static const int CHUNK_SIZE_X = 32;
private:
static const int SHIFT_X;
};

常量 SHIFT_X 在相应的 *.cpp 文件中初始化:

const int World::SHIFT_X = Ogre::Math::Log2(World::CHUNK_SIZE_X);

现在奇怪的是 SHIFT_X 中的值是 4 而不是 5。如果我从任意一个内调用 Ogre::Math::Log2(32)它正确计算 5 的方法。

这到底是怎么回事?我还需要说明,这只发生在 Windows 7(使用 Visual Studio Express 10)下。我的应用程序也在 GNU/Linux (Debian Squeeze) 下运行,一切正常。

最佳答案

Ogre::Math::Log2返回一个 Real,它实际上是一个 float,而您正试图将其存储为一个 int。因此,如果返回的值为 4.9999999999999998,转换后仍将以 4 结尾。如果您想继续使用 int 而不是 float,您应该四舍五入该值。

关于c++ - 存储在静态 const int 中的对数函数的错误返回值 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10229748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com