精華區beta Programming 關於我們 聯絡資訊
※ 引述《btocola@kkcity.com.tw (btocola)》之銘言: > => 凡是「沒有經過特別容器處理」,或「沒有轉換到可以容納的內建 >   型態」(*),皆是錯誤的回答! (例如用NTL就是正確的回答) > *:這裡很感興趣的是:有什麼「內建型態」可以容納200!的乘績? > 凡認為前貼文者「是正確的說法」,並且「知道如何容納方式」(既 > 然認為是正確的說法,應該之前就已知容納的方式吧?) 的網友, > 請賜教您所知方法(若有範例程式就更佳了),小弟魯鈍想學學它 > 的轉換、容納方式,在此先致謝了!^^" 上面提到的做大數運算的library或是語言我沒用過,我自己是在C++上 用MAPM,若你已知道運算過程內建型態無法容納你要運算的東西。使用 這些library應該是合理的吧!? 一個簡單的階層運算的結果,到底內建型態可不可容納?是可以在寫程 式之前就被評估出來的。無須討論有什麼「內建型態」可以容納200!的 結果。 若你經過運算的結果是可以被內建型別容納的,那有對應轉換的函式也 是合理的吧!? MAPM網頁有段程式碼 x = 9.34231; y = -21; z = "-8.982349249829824921479824924792347921E-17"; w = (82.30421 + sin(x / "21.11") / exp(y * 0.0726426)) * "4.32917E-2" / z; v = "3.742416" * log(-w); u = sqrt(v) + cbrt(v); printf("\n"); x.toString(obuf, 50); printf("x = [%s] \n",obuf); y.toString(obuf, 50); printf("y = [%s] \n",obuf); z.toString(obuf, 50); printf("z = [%s] \n",obuf); w.toString(obuf, 50); printf("w = [%s] \n",obuf); v.toString(obuf, 50); printf("v = [%s] \n",obuf); u.toString(obuf, 50); printf("u = [%s] \n",obuf); x = [9.34231000000000000000000000000000000000000000000000E+0] y = [-2.10000000000000000000000000000000000000000000000000E+1] z = [-8.98234924982982492147982492479234792100000000000000E-17] w = [-4.06165846135776503301770738763183914451375637893923E+16] v = [1.43121038693447060414449698088102300924570797933606E+2] u = [1.71941170788317776083850581271655444461072359345223E+1] 若你得到可以被內建型態可用的值,上面就只是把字串轉到你想要的內建型 態而已。 -- ※ Origin: SayYA 資訊站 <bbs.sayya.org> ◆ From: h23-74.grad.ccit.edu.tw