C ++中的Float变量

时间:2013-03-10 06:55:25

标签: c++

我正在学习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的值不是小数?

3 个答案:

答案 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 - 请参阅:

Why use static_cast<int>(x) instead of (int)x?

答案 1 :(得分:0)

pie = (22/7);

这里的除法是整数除法,因为两个操作数都是int

你打算做的是浮点划分:

pie = (22.0/7);

此处22.0double,因此除法成为浮点除法(即使7仍为int)。

规则是如果两个操作数都是整数类型(例如intlongchar等),那么它是整数除法,ELSE它是浮点除法(即即使单个操作数为floatdouble)。

答案 2 :(得分:0)

使用:

      pi = 22/7.0

如果你将两个操作数作为整数赋给/运算符,那么执行的除法将是整数除法,而浮点数将不是结果。