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