說你有2個號碼,每個典型的數學運算是有可能預測(不顯著開銷)的操作是否會導致在這些數字目前爲代表的類型的溢出?是否可以預測數學運算是否會導致溢出?
回答
是。
爲了簡單起見,我們假設溢出發生在100。
a * b >= 100
,我們有溢出
因此,對於a = n
,如果b >= 100/n
,我們有溢出。如果a
或b
爲0,則表示沒有溢出。
這對任何需要增加右手常數的數學設置都無效,因爲溢出檢測會溢出。但是,任何給定的操作步驟都可能會溢出,所以您確實需要在機器級別而不是算法級別之前檢查每個添加和乘法。因此,您需要將您的問題劃分爲最小的已知數量,以有效使用此溢出檢測。
我寧願讓語言拋出異常,但那只是我。
打開溢出保護,然後再應用操作。如果拋出溢出異常,或者錯誤寄存器設置了溢出位,或者您的環境告訴您有關該問題,那麼您知道如果再次執行該操作,則會發生溢出。
並非所有機器都具備此功能。 – 2010-08-19 22:08:55
對於總和:
MAX_NUMBER - A < B
會有溢出
如果A是否定的,那麼你將在你的測試 – 2010-08-19 23:27:42
@保羅R您是對得到一個溢出,有必要檢查,如果A> 0。並且如果兩者都是否定的,則會溢出MIN_NUMBER。 – 2010-08-20 12:07:44
- 1. Java的%運算符是否溢出?
- 2. BigInteger是否會溢出?
- 3. `recv()`是否會導致緩衝區溢出?
- 4. 上下文切換是否會導致堆棧溢出?
- 5. 從onDraw()調用invalidate()是否會導致堆棧溢出?
- 6. 堆棧緩衝區溢出是否會導致堆損壞?
- 7. 此代碼是否會導致堆棧溢出? Javascript setTimeout()
- 8. 是否可以從列表中C#應用數學運算4.0
- 9. 算術運算導致溢出。
- 10. NUnit System.OverflowException:算術運算導致溢出
- 11. Oracle:算術運算導致溢出
- 12. ValueTypes是否會導致GC?
- 13. Java檢查平方整數是否導致溢出
- 14. 能通過setTimout調用自己的函數是否會導致溢出?
- 15. System.DirectoryServices.DirectorySearcher導致「算術運算導致溢出」錯誤
- 16. System.DirectoryServices.DirectorySearcher導致「算術運算導致溢出」錯誤
- 17. 是否可以添加運算符類?
- 18. 您是否可以將用戶從AWS認證中導出/遷移,是否會導致供應商鎖定?
- 19. 檢測文本是否溢出
- 20. 檢測元素是否進入溢出
- 21. 檢測是否溢出沒有javascript
- 22. 是否可以預測程序運行需要多長時間?
- 23. 寄存器溢出是否可能導致CUDA_EXCEPTION_5,超出範圍地址錯誤?
- 24. 是否可以更改導葉輸出?
- 25. 是否可以導出Jenkins項目?
- 26. 類型是否可以自行導出?
- 27. 如果Activity退出,AsyncTask是否可以導致問題?
- 28. 重複使用時,nsiTimer是否會導致溢出或內存問題?
- 29. 使用VS2008導致「算術運算導致溢出」的PL/SQL AVG函數
- 30. 是否可以在多維數組上執行算術運算?
這可能是在一天結束的時候更便宜,讓不同的語言(在特殊情況下),比鐵圈試圖覆蓋所有的跳以及可能溢出的情況。 – 2010-08-19 22:11:20
不幸的是,舊的語言不走這條路,而且幸運的,除非你耗盡內存較新的就是沒有這個問題:P – 2010-08-19 22:29:16
「除非你運行內存不足」是正確的?當算術運算產生的結果超出操作返回的數據類型範圍時,會發生溢出異常。 – 2010-08-19 23:14:02