Extension:BCmath

This page is a translated version of the page Extension:BCmath and the translation is 64% complete.
Manual för MediaWikitillägg
BCmath
Utgivningsstatus: experimentell
Genomförande API
Beskrivning Erbjuder aritmetik med villkorlig precision för Scribunto.
Författare
  • John Erling Blad (Jebladdiskussion)
Senaste versionen 0.1.0
Kompatibilitetsregler Master maintains backward compatibility.
MediaWiki >= 1.33
Förändringar i databasen Nej
Licenser GNU General Public License 2.0 eller senare
Ladda ner
README, LDoc
  • $wgExtFiltering
Översätt tillägget BCmath

BCmath erbjuder aritmetik med villkorlig precision för Lua moduler. With the lib from this extension it would be completely valid to do calculations on 𝜋 with 125 characters, 𝜋 ≅ 3,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 820 974 944 592 307 816 406 286 208 998 628 034 825 342 117 067 982 148 086 513 282 306 647 093 8… (Actually, the real 𝜋 is even infinitely much longer!)

Tillägget använder PHP BCMath arbiträr precisionsmatematik api genom användning av phpseclib/bcmath_compat för att komma åt bc programmeringsspråk.

Installation

Expect är beroende av moduler från Scribunto -utvidgningen.

  • Ladda ner och placera filen/filerna i en katalog som heter BCmath i din extensions/-mapp.
  • Lägg till följande kod längst ner i din LocalSettings.php -fil:
    wfLoadExtension( 'BCmath' );
    
  •   Klart – Ta dig till Special:Version på din wiki för att bekräfta att tillägget har installerats ordentligt.

Användning

Arbets flödet är först att definiera en BCmath-instans, och därefter bruka den i normala ekvationer, i länkade operationer, eller som en del av funktion kall. Förekomst av en instans i stödda operationer kommer att utlösa användning av de speciella funktionerna och metoderna.

-- Used for chained operations
local sum1 = mw.bcmath.new( 0.0 ):add( 42.0 )                   -- 42.000000000000000
local sum2 = mw.bcmath.new( '0' ):add( '42' )                   -- 42

-- Used in an equation
local sum3 = sum1 * sum2 + 3.14                                 -- 1767.140000000000000

-- Used in function calls
local sum4 = mw.bcmath.add( mw.bcmath.mul( sum1, sum2 ), 3.14 ) -- 1767.140000000000000
local str1 = sum4 'sci'                                         -- 1.767140000000000000e3
local str2 = sum4( 'sci', 4 )                                   -- 1.767e3

För ytterligare hjälp, se den genererade dokumentationen på LDoc.

Utveckling

För att återskapa den Vagrant-baserade utvecklingsmiljön, se BCmath: Manual/Vagrant.

Alternatives

The best and perhaps only real alternative is the decNumber C-library, which implements IEEE 754r, and the ldecNumber Lua wrapper library for interfacing with decNumber. These two must be used together.

The decNumber library should have a security audit before it is used, but it is probably safe. The Lua library is archived, and is hopelessly outdated with a last version (ldecNumber-21) from August 2007. There are no known MediaWiki-integration for decNumber/ldecNumber.

Se även