Java計算出現的問題int超出最大值會怎樣

2021-08-14 06:38:58 字數 406 閱讀 9096

今天發現我的android應用出現乙個問題,找了好久,現在記錄下來

今天計算是debug除錯出這麼乙個問題

我用簡單的乘法盡然算出了乙個負數,最後發現int的計算超出最大值就變成負數了

currenttimemills 當前時間

正確的寫發應該如下(用long計算)

long time = currenttimemills - (90l * 24l * 60l * 60l * 1000l);

最近又找了以下為什麼會變成負數,原因是,int型資料在二進位制裡面是有固定位數的,當數字超過int資料時,二進位制的最前面的位數也就是符號位會發生變化,所以就變成負數了

浮點數精度計算出現的問題

當我們儲存浮點數後再讀取浮點數,結果可能會出現一點點偏差。比如 float ft1 20.2 這樣編譯器會報警告,因為小點數預設為double cstring str str.format t f ft1 這時候ft1的值等於20.200001。float ft2 20.8 cstring str ...

組合數計算出現浮點誤差的問題python

首先組合數公式c n,m 可以簡單化簡,例如c 8,5 c 8,3 8 7 6 3 2 1 m或n m為幾,分式上下就有幾 個數。def cni n,i 原函式 minni min i,n i c 8,5 c 8,3 減少下面迴圈次數 result 1 for j in range 0,minni ...

KMP演算法計算出現次數(包含重疊部分)

kmp演算法 返回模式串在文字串 現的次數。例如 abdabdababdab 中 abdab 在 0,4 3,7 8,12 出現,則返回3 主要的改動在kmp函式中的while迴圈 include using namespace std void getnext const char ps,int ...