[問題] 遇到超級長的資料要怎麼處理???
我現在在做一個多維矩陣的行列式 用高斯消去法
因為 數值有小數 所以我會先把數值都乘到整數 並把數值的型態改成 long
因為在輾轉相除法時 明明是整數的double 還是常常會出現浮點數誤差
可能是因為誤差到overflow
所以就算我判斷他 只要 Math.abs < 0.00001 就跳出輾轉相除法
但還是會在輾轉相除法時跑無窮迴圈
我現在算這個 5x5 的矩陣行列式
11.00000 22.00000 33.00000 44.00000 55.00000
-33.00000 -55.00000 -33.00000 222.00000 444.00000
-99.00000 -777.00000 555.00000 33.00000 2345.00000
-0.00300 -444.00000 -0.77700 -0.88800 444.00000
444.00000 -333.00000 -0.00888 0.65400 0.02345
因為從小數補成整數 所以數值變很大
在計算過程中 超出了long的長度
如果是 double 應該是夠長 但是在輾轉相除法時 會跑不出迴圈
我應該用比 long 更大的型態去處理嗎??? 還是說有什麼更適當的方式解決???
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 68.206.227.13
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1488150754.A.7F6.html
推
02/27 07:18, , 1F
02/27 07:18, 1F
推
02/27 11:38, , 2F
02/27 11:38, 2F
→
02/27 11:44, , 3F
02/27 11:44, 3F
→
02/27 11:45, , 4F
02/27 11:45, 4F
推
02/27 12:03, , 5F
02/27 12:03, 5F
→
02/27 12:04, , 6F
02/27 12:04, 6F
→
02/27 12:04, , 7F
02/27 12:04, 7F
→
02/27 12:05, , 8F
02/27 12:05, 8F
推
02/27 12:13, , 9F
02/27 12:13, 9F
推
02/27 12:57, , 10F
02/27 12:57, 10F
推
02/27 13:36, , 11F
02/27 13:36, 11F
→
02/27 13:36, , 12F
02/27 13:36, 12F
推
02/28 07:03, , 13F
02/28 07:03, 13F