Turbo C ++结果与long int不一致

时间:2018-06-21 13:51:16

标签: c++

我面临着long int输出结果的问题。下面是我的程序,我正在使用各种方法计算税金:1)将结果输出到intlong变量中。我认为代码中的所有四个结果都应该相同,但是tax3变量中的结果输出与其他三个结果不同(小于1)。请帮助我了解原因。

#include<iostream.h>
#include<conio.h>

int main()
{
    long salary;
    cout << "Enter Salary: " << endl;
    cin>>salary;
    float tax1, tax2;
    long tax3, tax4;
    tax1 = salary*0.15;
    tax2 = (salary*15)/100;
    tax3 = salary*0.15;
    tax4 = (salary*15)/100;
    cout << "tax1=" << tax1 << endl;
    cout << "tax2=" << tax2 << endl;
    cout << "tax3=" << tax3 << endl;
    cout << "tax4=" << tax4 << endl;
    getch();
    return(0);
}

1 个答案:

答案 0 :(得分:0)

编译器已知两种主要的数字类型-浮点数和整数。浮点后面的IEEE-754 floating point表示32位(浮点)和64位(双精度)。在turbo C中,int仅是16位。同样,当您从float复制到int时,仅复制整数部分。即考虑以下示例:

     float a=9.8;
     int b=(int)a;

在上面的代码中,当您打印b时,它只会给出9。另外一条建议,如果您想更好地学习c ++,请从turbo c切换到gcc。