我正在学习C++,并在一个简单的程序中遇到这些问题,所以请帮助我。
这是代码
#include<iostream>
using std::cout;
int main()
{ float pie;
pie = (22/7);
cout<<"The Value of Pi(22/7) is "<< pie<<"\n";
return 0;
}
输出是
The Value of Pi(22/7) is 3
为什么 Pi 的值不是十进制?
那是因为你正在做整数除法.
你想要的是真正的浮点除法:
#include<iostream>
using std::cout;
int main()
{
float pie;
pie = float(22)/7;// 22/(float(7)) is also equivalent
cout<<"The Value of Pi(22/7) is "<< pie<<"\n";
return 0;
}
然而,这种类型转换:float(variable)
or float(value)
不是类型安全的。
通过确保您计算的值一开始就是浮点型,您可以获得所需的值,如下所示:
22.0/7
OR
22/7.0
OR
22.0/7.0
但是,这通常很麻烦,并且需要您跟踪正在使用的所有类型。就这样最终也是最好的方法涉及使用 static_cast:
static_cast<float>(22)/7
OR
22/static_cast<float>(7)
至于你为什么should使用 static_cast - 参见:
为什么使用 static_cast(x) 而不是 (int)x? https://stackoverflow.com/questions/103512/in-c-why-use-static-castintx-instead-of-intx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)