gpt4 book ai didi

将带有负数的 Float 转换为 Int32 失败,C

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:23 25 4
gpt4 key购买 nike

我有以下函数,假设将 float 转换为 int32。问题是对于负数它根本不起作用(我的 if 语句没有执行)。我已经尝试了一个类似的程序,用于从 float 到 int16 的转换,一切正常。对不起,如果这太简单了,但我无法弄清楚我遗漏了什么以及为什么它不适用于负值。

#define MaxInt32 2147483647
#define MinInt32 -2147483648

bool CastFloatToInt32 ( float fNumber, int32 *ConvertedValue) {
bool CastStatus = False;

if ( ( fNumber >= MinInt32 ) && ( fNumber <= MaxInt32 ) ) {
*ConvertedValue = ( int32 ) ( fNumber );
CastStatus = True;

} else {
if (fNumber < MinInt32) {
*ConvertedValue = MinInt32;

} else {
*ConvertedValue = MaxInt32;
}
}

return CastStatus;
}

最佳答案

你可以在这里看到原因:https://stackoverflow.com/a/20910712/1073171

因此,您可以通过将定义更改为以下任一方式来修复此代码:

#define MaxInt32 (int32)0x7FFFFFFF
#define MinInt32 (int32)0x80000000

否则:

#define MaxInt32 (int32)2147483647
#define MinInt32 (int32)(-2147483647 - 1)

推理在我上面链接的答案中给出。如果您使用的是 GCC,您也可以随时移动到 -std=gnu99 或类似的!

关于将带有负数的 Float 转换为 Int32 失败,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30590771/

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