C++ 为什么数据转换在c++;? cout

C++ 为什么数据转换在c++;? cout,c++,C++,问题不在于你没有正确地施法,而在于你没有在正确的时间施法。由于优先级的原因,将首先执行2/5,并进行整数除法,留下2。然后将其转换为双精度,保持为2。如果您想将其设置为2.5,则必须在进行除法之前对其进行强制转换。这可能看起来像: cout << (float(5 / 2)) << endl; std::不能问自己:5/2的结果是什么。。。您认为强制转换是如何恢复您似乎正在寻找的信息的呢?(5/2)的可能重复项是整数除法,因此结果实际上是2,然后将其强制转换为floa

问题不在于你没有正确地施法,而在于你没有在正确的时间施法。由于优先级的原因,将首先执行
2/5
,并进行整数除法,留下
2
。然后将其转换为双精度,保持为
2
。如果您想将其设置为
2.5
,则必须在进行除法之前对其进行强制转换。这可能看起来像:

cout <<  (float(5 / 2)) << endl;

std::不能问自己:
5/2
的结果是什么。。。您认为强制转换是如何恢复您似乎正在寻找的信息的呢?
(5/2)
的可能重复项是整数除法,因此结果实际上是2,然后将其强制转换为
float
。您需要使用实际的浮点除法,例如:
(float(5)/2)
(5.0f/2)
(5/float(2))
(5/2.0f)
顺便说一句,您为什么要使用
float
类型?现在最好使用<代码>双< /代码>类型。考虑一下,直接生成一个文字<代码>浮点< /代码>,例如<代码> 5。F/2 。只需要分派红利或除数。
std::cout << (float)5 / (float)2 << std::endl;