剛才試了一下
直接用c++內建的sqrt跟pow來算
果真只用double的sqrt跟pow的確會有問題
換成用array寫的就沒問題
看起來應該就是double的鍋了
微軟官方也有列出excel的限制:
Excel儲存格限制 (https://support.office.com/zh-tw/article/excel-%E7%9A%84%E8%A6%8F%E6%A0%BC%E5%8F%8A%E9%99%90%E5%88%B6-1672b34d-7043-467e-8e27-269d656771c3)
計算的規格與限制
數字精確度
15 位數
最小的可容許負數
-2.2251E-308
最小的可容許正數
2.2251E-308
最大的可容許正數
9.99999999999999E+307
最大的可容許負數
-9.99999999999999E+307
經由公式取得的最大可容許正數
1.7976931348623158e+308
經由公式取得的最大可容許負數
-1.7976931348623158e+308
看起來用double這就是原因所在了