模組:BigNumber/doc
外观

这是Module:BigNumber的文档页面
![]() | 此頁面是Module:BigNumber的模块文档。 此頁面可能包含了模板的使用說明、分類和其他内容。 |
以百萬進制運作的大數運算系統(或稱高精度计算)。當中也包含了大數運算進制轉換系統。目前支援加法、減法、乘法、除法與整數冪次。
使用方法
Lua
- .bigint("大數", 底數)
- 以一個指定底數的字串初始化一個大數。底數預設值為10。
- 例如:
local bigint = require('Module:BigNumber') print(bigint.bigint("425731578351266") * bigint.bigint("948700000017358"))
- 輸出:403891548389235902937021275228
- 例如:
- .convertBase("數字字串", 原始底數, 目標底數, 位數補齊)
- 將特定進位制的數字轉成以另一個進位制表示。在本模組中用於大數輸入輸出。
- ._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)
)來清除小數。