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))
虽然这个没兴趣
在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))
虽然这个没兴趣