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

时间:2018-03-14 17:54:08

标签: c++ division outofrangeexception numeric-limits

在C ++中,我想知道如何获得“INT_MAX /(INT_MAX + INT_MAX)”的正确答案0.5?我试图将除数/除数和被除数分成长,并且将除数加成双,所有都返回-1073741823。有人能给我一些建议吗?感谢。

1 个答案:

答案 0 :(得分:0)

由于两个原因,你所尝试的是不可能的。

首先,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))虽然没有兴趣。