Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
INT_MAX除以自身的两倍(INT_MAX*2) 在C++中,我想知道如何获得正确的答案0.5“InthMax /(InthMax + Inthax)”?我尝试将除数/除数和除数都转换为long,并将除数转换为double,返回值为1073741823。谁能给我一些建议吗?谢谢。_C++_Division_Outofrangeexception_Numeric Limits - Fatal编程技术网

INT_MAX除以自身的两倍(INT_MAX*2) 在C++中,我想知道如何获得正确的答案0.5“InthMax /(InthMax + Inthax)”?我尝试将除数/除数和除数都转换为long,并将除数转换为double,返回值为1073741823。谁能给我一些建议吗?谢谢。

INT_MAX除以自身的两倍(INT_MAX*2) 在C++中,我想知道如何获得正确的答案0.5“InthMax /(InthMax + Inthax)”?我尝试将除数/除数和除数都转换为long,并将除数转换为double,返回值为1073741823。谁能给我一些建议吗?谢谢。,c++,division,outofrangeexception,numeric-limits,C++,Division,Outofrangeexception,Numeric Limits,你所尝试的是不可能的,原因有二 首先,INT\u MAX+INT\u MAX不能用INT表示,这是合乎逻辑的,因为INT的最大值是INT\u MAX。这会导致溢出 其次,即使您尝试执行(3/(3+3)),您也会得到0,因为您使用的是整数而不是小数。做你想做的事你可以试试: static_cast(INT_MAX)/(static_cast(INT_MAX)+static_cast(INT_MAX))虽然这不感兴趣。0.5是双精度,所以需要浮点除法。另外,INT\u MAX+INT\u MAX会给

你所尝试的是不可能的,原因有二

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

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


static_cast(INT_MAX)/(static_cast(INT_MAX)+static_cast(INT_MAX))
虽然这不感兴趣。

0.5
双精度
,所以需要浮点除法。另外,
INT\u MAX+INT\u MAX
会给你一个错误的结果。
double correct\u answer=0.5@storyteller:constexpr?;-)@芭丝谢芭-你知道我,我不喜欢用勺子喂OP:P@EricWong-如果我冒犯了你,请道歉。我只是在开玩笑。虽然你应该在最初发布时提供这些详细信息。如果您的问题是“如何防止此等式可能出现的溢出”,那么这将是一个好问题!相反,你的措辞给了我一个愚蠢的解释空间,就像我的一样。如果你小心放在哪里,你实际上只需要一个
static\u cast
it@Justin就语言而言是正确的,但对于人类读者来说,我可能至少会在第一部
INT\u MAX
的演员阵容中离开。那么,如果这是胡说八道,为什么要回答呢?为体面的问题节省精力。如果你真的决定要回答的话,尽你最大的努力。我是第二个讲故事的人,通过回答一个你认为是低质量的问题,你实际上降低了它会得到改善的机会(不想指指别人,经常发生在自己身上,只是说……)(INT_MAX)+INT_MAX)
“你认为这会对OP有帮助吗?而且对于编译器和执行都没有任何区别,那么这有什么意义呢?