模組:BigNumber/doc
外观

这是Module:BigNumber的文档页面
![]() | 此頁面是Module:BigNumber的模块文档。 此頁面可能包含了模板的使用說明、分類和其他内容。 |
以百萬進制運作的大數運算系統(或稱高精度计算)。當中也包含了大數運算進制轉換系統。目前支援加法、減法、乘法、除法與整數冪次。
使用方法
Lua
- .bigint("bignumber", base)
- 以一個指定底數的字串初始化一個大數。底數預設值為10。
- 參數:
- bignumber(大數):要初始化的大數。若未輸入則默認為0。
- base(輸入的底數):輸入值的進位制,默認為10。
- 例如:
local bigint = require('Module:BigNumber') print(bigint.bigint("425731578351266") * bigint.bigint("948700000017358"))
- 輸出:403891548389235902937021275228
- 參數:
- .convertBase("number", base, from, width, precision, sub)
- 將特定進位制的數字轉成以另一個進位制表示。在本模組中用於大數輸入輸出。
- 參數:
- number(數字):(必填)須轉換的數字,以字符串形式輸入。十進制的數字可直接以數字形式輸入。
- base(目標底數):目標進位制,可取任意大於1(含)的正實數和小於-1(不含)的負整數,可接受非整數的底數,如,但不接受負的非整數的底數。默認為10。
- from(原始底數):輸入值的進位制,默認為10(如果輸入值以「0x」開頭,則默認為16)。
- width(位數補齊):小數點前至少顯示的位數,達不到時會加「0」。
- precision(小數計算最大位數):小數點後的位數,達不到時會加「0」。不填該項會顯示所有位數,但不超過20位數。
- sub(輸出模式):見Template:進制/doc#sub的值。
- prefix:加在輸出值前的維基代碼。n為空時則不加。例如在轉換到十六進制後在前面加上
0x
。 - suffix:加在輸出值後的維基代碼。n為空時則不加。例如在轉換到八進制後在後面加上
<sub>8</sub>
。
- 例如:
- 由於模組本身是大數運算系統,因此若數字過大失去精度的話可以考慮改成以字串輸入:
bigint.convertBase(123456789123456789)
→123456789123460000bigint.convertBase("123456789123456789")
→123456789123456789
- 參數:
- ._FFT(實部陣列, 虛部陣列, 長度, 是否為逆變換)
- 執行快速傅里叶变换。在本模組中用於大數乘法。
模板
搭配{{計算}}使用
{{計算|2^64 | number class=Module:BigNumber.bigintmath}}
{{計算|425731578351266 * 948700000017358 | number class=Module:BigNumber.bigintmath}}
{{計算|factorial(70) | number class=Module:BigNumber.bigintmath}}
- →11978571669969891796072783721689098736458938142546425857555362864628009582789845319680000000000000000
- 對比
{{計算|factorial(70) }}
→1.197857166997e+100
- 對比
- →11978571669969891796072783721689098736458938142546425857555362864628009582789845319680000000000000000
注意事項
雖然大數運算系統(或稱高精度计算)理論上無計算上的上限,但考慮到維基百科伺服器有限制腳本運作時間為10秒(見WP:模板限制)因此也不能運算過大的數;此外冪次的運算是使用傳統一次一次相乘,因此過大的指數也可能導致超過模板運算上限。雖然目前乘法演算法已使用傅里叶变换進行加速,但使用此模組時仍應留意效能。
此外,本模組主要是設計給整數的大數運算(Big Integer),但有保留小數運算的能力,尤其是運算除法不整除時,多次的除法會導致小數位數的增長,因而導致計算時間增加,因此若需要做多次除法建議取整,可使用number:setpoint(0)
或.bigintmath.floor(number)
(搭配{{計算}}時使用floor(number)
)來清除小數。