#include <iostream> 
using namespace std;

int main()
{
    int a,h,s;
    cout << "a = ";
    cin >> a;
    cout << "h = ";
    cin >> h;
    s = a*h/2;
    cout << "s = " << s << endl;
    return 0;
}

这是一个计算三角形面积的程序;a是底,h是高,s是面积
如果我们输入底3米,高5米,面积应该是7.5平方米,结果程序输出的确是7,而没有输出7.5

为了准确的存储S的值,需要把s定义为单精度实数float

#include <iostream> 
using namespace std;

int main()
{
    int a,h;
    float s; 
    cout << "a = ";
    cin >> a;
    cout << "h = ";
    cin >> h;
    s = a*h/2;
    cout << "s = " << s << endl;
    return 0;
}

现在我们程序修改成这样,s定义为float了,结果还是输出了7,为什么呢?

s = a*h/2,因为这一步计算时,a,h,2,都是整数,所以运算时还是按整数方式运算,得出了结果仍然是7,然后赋值给浮点变量s,s就成了7.0

我们要把计算这一步改成 s = a*h/2.0
最后就得到了正确的结果!