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_t
,Float64
通常应转换为 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
。
我正在用 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_t
,Float64
通常应转换为 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
。