我正在学习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的值不是小数?
答案 0 :(得分:3)
那是因为你正在做整数除法。
你想要的只是浮动分割:
#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)
或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)
至于为什么应该使用static_cast - 请参阅:
答案 1 :(得分:0)
pie = (22/7);
这里的除法是整数除法,因为两个操作数都是int
。
你打算做的是浮点划分:
pie = (22.0/7);
此处22.0
为double
,因此除法成为浮点除法(即使7
仍为int
)。
规则是如果两个操作数都是整数类型(例如int
,long
,char
等),那么它是整数除法,ELSE它是浮点除法(即即使单个操作数为float
或double
)。
答案 2 :(得分:0)
使用:
pi = 22/7.0
如果你将两个操作数作为整数赋给/运算符,那么执行的除法将是整数除法,而浮点数将不是结果。