【发布时间】:2018-03-14 17:54:07
【问题描述】:
在 C++ 中,我想知道如何获得“INT_MAX / (INT_MAX + INT_MAX)”的正确答案 0.5?我尝试将除数/除数和除数都转换为长,并将除数转换为双倍,全部返回-1073741823。谁能给我一些建议?谢谢。
【问题讨论】:
-
0.5是double所以你需要浮点除法。INT_MAX + INT_MAX也会给你一个错误的结果。 -
double correct_answer = 0.5; -
@storyteller: 肯定是 constexpr 吗? ;-)
-
@Bathsheba - 你了解我,我不喜欢用勺子喂 OP:P
-
@EricWong - 如果我冒犯了你,我深表歉意。我只是在开玩笑。尽管您在最初发布时应该提供这些详细信息。如果您的问题是“如何防止此等式可能发生溢出”,那将是一个好问题!取而代之的是,你用一种为愚蠢的解释留出空间的方式来表达它,就像我的一样。
标签: c++ division outofrangeexception numeric-limits