java double溢出_java – 可以加倍或BigDecimal溢出?
雙重溢出到Infinity和-Infinity,它不會繞過. BigDecimal不會溢出,期間,它只受計算機內存量的限制.見:
How to get biggest BigDecimal value
與.addExact之間的唯一區別是它嘗試檢測是否發生溢出,并拋出異常而不是包裝.這是源代碼:
public static int addExact(int x,int y) {
int r = x + y;
// HD 2-12 Overflow iff both arguments have the opposite sign of the result
if (((x ^ r) & (y ^ r)) < 0) {
throw new ArithmeticException("integer overflow");
}
return r;
}
如果你想檢查是否發生溢出,從某種意義上說,使用雙精度來做更簡單,因為你可以簡單地檢查Double.POSITIVE_INFINITY或Double.NEGATIVE_INFINITY;在int和long的情況下,它是一個稍微更復雜的事情,因為它不總是一個固定值,但在另一個可以是輸入(例如Infinity 10 = Infinity,你可能不想拋出一個異常這個案例).
由于所有這些原因(我們甚至還沒有提到NaN),這可能是為什么在JDK中不存在這樣的addExact方法.當然,您可以隨時將自己的實現添加到您自己的應用程序中的實用程序類中.
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java double溢出_java – 可以加倍或BigDecimal溢出?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 和平精英里旧钥匙在哪里开门
- 下一篇: 腾讯会议多人实时视频