C++ 上的数学输出(针对其他语言进行检查)

math output on C++ (checked against other language)

我正在用 C++ 编写:

int main()
{
    cout<<"print "<< int(((float(979430543) - float(800445804))/2.0)+.5);
}

for output: 89492352

并检查 julia 语言:

print(Int64(((Float64(979430543) - Float64(800445804))/2.0)+.5))
89492370

结果之间的差异是 18 - 我错过了什么?

float 在 C++ 中最有可能是 32 位,而 Float64 肯定是 64 位宽。在 C++ 版本中将 float 强制转换为 double 强制转换,它将 surely produce the expected output.

您没有使用等效的数据类型。

Int64 应转换为 std::int64_tFloat64 通常应转换为 double

1.7.2> n = 979430543
979430543

1.7.2> n - Int(Float32(n))
15

1.7.2> n - Int(Float64(n))
0

Julia 结果是正确的。正如其他人所说,您在 C++ 代码中使用 Float32