gpt4 book ai didi

c++ - 对 "same"类型转换的不同结果感到困惑, float 到 int

转载 作者:可可西里 更新时间:2023-11-01 17:37:59 25 4
gpt4 key购买 nike

如果我先将一个值分配给一个变量的浮点计算,然后将其分配给一个带有隐式类型转换的 unsigned int,我得到一个答案。但是,如果我将相同的计算直接分配给 unsigned int,再次使用隐式类型转换,我会得到不同的答案。

下面是我编译并运行来演示的示例代码:

#include <iostream>



int
main( int argc, char** argv )
{
float payloadInTons = 6550.3;


// Above, payloadInTons is given a value.
// Below, two different ways are used to type cast that same value,
// but the results do not match.
float tempVal = payloadInTons * 10.0;
unsigned int right = tempVal;
std::cout << " right = " << right << std::endl;


unsigned int rawPayloadN = payloadInTons * 10.0;
std::cout << " wrong = " << rawPayloadN << std::endl;


return 0;
}

有谁知道为什么“对”就是对,“错”就是错?

顺便说一下,我在 Ubuntu 14.04 LTS 上使用 gcc 4.8.2,如果有的话。

最佳答案

您正在使用 double 文字。使用适当的 float 文字,一切都很好。

int
main( int argc, char** argv )
{
float payloadInTons = 6550.3f;
float tempVal = payloadInTons * 10.0f;

unsigned int right = tempVal;
std::cout << " right = " << right << std::endl;

unsigned int rawPayloadN = payloadInTons * 10.0f;
std::cout << "also right = " << rawPayloadN << std::endl;


return 0;
}

输出:

     right = 65503
also right = 65503

关于c++ - 对 "same"类型转换的不同结果感到困惑, float 到 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29777211/

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