-4

在 C++ 中,我想知道如何获得“INT_MAX / (INT_MAX + INT_MAX)”的正确答案 0.5?我尝试将除数/除数和除数都转换为长,并将除数转换为双倍,全部返回-1073741823。谁能给我一些建议?谢谢。

4

1 回答 1

0

您正在尝试的事情是不可能的,原因有两个。

首先,INT_MAX + INT_MAX不能用 an 表示int,这是合乎逻辑的,因为 an 的最大值intINT_MAX。这会导致溢出。

其次,即使您尝试这样做,(3 / (3 + 3))您也会得到 0,因为您使用的是整数而不是小数。做你想做的事,你可以试试:

static_cast<double>(INT_MAX) / (static_cast<double>(INT_MAX) + static_cast<double>(INT_MAX))虽然这没有兴趣。

于 2018-03-14T17:58:49.303 回答