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

And*_*man 1 c++ julia

我用 C++ 写这个:

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

for output: 89492352
Run Code Online (Sandbox Code Playgroud)

并检查 Julia 语言:

print(Int64(((Float64(979430543) - Float64(800445804))/2.0)+.5))
89492370
Run Code Online (Sandbox Code Playgroud)

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

Fur*_*ish 8

float在 C++ 中最有可能是 32 位宽,而Float64当然是 64 位宽。将您的float强制转换更改double为 C++ 版本中的强制转换,它肯定会产生预期的输出


use*_*522 6

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

Int64应翻译为std::int64_t并且Float64通常翻译为double.