将相同数字除以 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 作为整数。