INT_MAX 除以自身的两倍 (INT_MAX * 2)

INT_MAX divided by twice of itself (INT_MAX * 2)

在C++中,我想知道如何得到"INT_MAX / (INT_MAX + INT_MAX)"的正确答案0.5?我尝试将 divisor/both 除数和股息转换为多头,并将除数转换为双倍,所有 return -1073741823。谁能给我一些建议?谢谢

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

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

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

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