将相同数字除以 2 但作为 int 和 float 时输出不同
Different output when dividing same numbers by 2 but as int and float
为什么当我将 1234567890 除以 2 时得到的答案略有不同?
#include <iostream>
using namespace std;
int main()
{
float m;
int n;
cin>>n;
n/=2;
cout<<n<<endl;
cin>>m;
m/=2;
cout<<m;
}
float
使用 24 位作为尾数(排序 of:IEEE 使用 23 加一个隐式位)而 int
可能使用 31(或 63;另一位实际上是一个符号少量)。精确表示的值位需要 30 位(我认为),因此 float
值是四舍五入的。
这是由于整数与常规除法。将两个整数相除时,结果也是 int
,这是在您执行 5/2
到 return 2
时造成的。浮点数和双精度数没有这个问题。要绕过 int 问题,您可以 (double)five/two
使用 5 和 2 作为整数。
为什么当我将 1234567890 除以 2 时得到的答案略有不同?
#include <iostream>
using namespace std;
int main()
{
float m;
int n;
cin>>n;
n/=2;
cout<<n<<endl;
cin>>m;
m/=2;
cout<<m;
}
float
使用 24 位作为尾数(排序 of:IEEE 使用 23 加一个隐式位)而 int
可能使用 31(或 63;另一位实际上是一个符号少量)。精确表示的值位需要 30 位(我认为),因此 float
值是四舍五入的。
这是由于整数与常规除法。将两个整数相除时,结果也是 int
,这是在您执行 5/2
到 return 2
时造成的。浮点数和双精度数没有这个问题。要绕过 int 问题,您可以 (double)five/two
使用 5 和 2 作为整数。