Precision
bigdec absbigdec comparebigdec divbigdec divbigdec negatebigdec powbigdec precisionbigdec precisionbigdec roundbigdec roundbigdec sqrtbigdec stripbigdec ebigdec meanbigdec pibigdec sum
bigdec abs <x>
Description
Get the absolute value
Get the absolute value
Parameters
x: A decimal number - Number - required
x: A decimal number - Number - required
admin
bigdec abs -12.50
mentdb
12.50
Positive number
admin
bigdec abs 3.14
mentdb
3.14
Many digits
admin
bigdec abs -0.000000000000000000001
mentdb
0.000000000000000000001
bigdec compare <a> <b>
Description
Compare two decimal numbers: -1 (a < b), 0 (equal: 1.0 = 1.00), 1 (a > b)
Compare two decimal numbers: -1 (a < b), 0 (equal: 1.0 = 1.00), 1 (a > b)
Parameters
a: A decimal number - Number - required
b: A decimal number - Number - required
a: A decimal number - Number - required
b: A decimal number - Number - required
admin
bigdec compare 1.0 1.00
mentdb
0
a < b: -1
admin
bigdec compare 0.1 0.2
mentdb
-1
a > b: 1
admin
bigdec compare 10 9.99999999999999999999
mentdb
1
Exact sum against 0.3 (0.1 + 0.2)
admin
bigdec compare (bigdec sum "[0.1, 0.2]") 0.3
mentdb
0
bigdec div <a> <b> <precision>
Description
Divide with a number of significant digits (rounding HALF_UP)
Divide with a number of significant digits (rounding HALF_UP)
Parameters
a: A decimal number - Number - required
b: A decimal number - Number - required
precision: The number of significant digits - Number - required
a: A decimal number - Number - required
b: A decimal number - Number - required
precision: The number of significant digits - Number - required
admin
bigdec div 1 7 50
mentdb
0.14285714285714285714285714285714285714285714285714
1/3 with 30 digits
admin
bigdec div 1 3 30
mentdb
0.333333333333333333333333333333
Exact division
admin
bigdec div 10 4 10
mentdb
2.5
Interest per month: 5 % / 12
admin
bigdec div 0.05 12 20
mentdb
0.0041666666666666666667
bigdec div <a> <b> <precision> <mode>
Description
Divide with a number of significant digits and a rounding mode
Divide with a number of significant digits and a rounding mode
Parameters
a: A decimal number - Number - required
b: A decimal number - Number - required
precision: The number of significant digits - Number - required
mode: The rounding mode - String - required
a: A decimal number - Number - required
b: A decimal number - Number - required
precision: The number of significant digits - Number - required
mode: The rounding mode - String - required
admin
bigdec div 2 3 5 DOWN
mentdb
0.66666
Rounding up
admin
bigdec div 2 3 5 UP
mentdb
0.66667
Rounding half even (banker)
admin
bigdec div 1 8 2 HALF_EVEN
mentdb
0.12
Rounding half up
admin
bigdec div 1 8 2 HALF_UP
mentdb
0.13
bigdec negate <x>
Description
Get the opposite
Get the opposite
Parameters
x: A decimal number - Number - required
x: A decimal number - Number - required
admin
bigdec negate 12.5
mentdb
-12.5
Negative number
admin
bigdec negate -0.5
mentdb
0.5
Zero
admin
bigdec negate 0
mentdb
0
bigdec pow <x> <n> <precision>
Description
Get x^n (n integer, can be negative) with a number of significant digits
Get x^n (n integer, can be negative) with a number of significant digits
Parameters
x: A decimal number - Number - required
n: An integer - Number - required
precision: The number of significant digits - Number - required
x: A decimal number - Number - required
n: An integer - Number - required
precision: The number of significant digits - Number - required
admin
bigdec pow 1.1 10 30
mentdb
2.5937424601
admin
bigdec pow 2 100 50
mentdb
1267650600228229401496703205376
Compound interest 1.05^30
admin
bigdec pow 1.05 30 20
mentdb
4.3219423751506620092
Large exponent: 2^200 exact
admin
bigdec pow 2 200 70
mentdb
1606938044258990275541962092341162602522202993782792835301376
Small numbers
admin
bigdec pow 0.5 20 30
mentdb
0.00000095367431640625
bigdec precision <x> <precision>
Description
Round to a number of significant digits (rounding HALF_UP)
Round to a number of significant digits (rounding HALF_UP)
Parameters
x: A decimal number - Number - required
precision: The number of significant digits - Number - required
x: A decimal number - Number - required
precision: The number of significant digits - Number - required
admin
bigdec precision 123456.789 4
mentdb
123500
Significant digits of a small number
admin
bigdec precision 0.000123456 3
mentdb
0.000123
Integer
admin
bigdec precision 987654321 2
mentdb
990000000
bigdec precision <x> <precision> <mode>
Description
Round to a number of significant digits with a rounding mode
Round to a number of significant digits with a rounding mode
Parameters
x: A decimal number - Number - required
precision: The number of significant digits - Number - required
mode: The rounding mode - String - required
x: A decimal number - Number - required
precision: The number of significant digits - Number - required
mode: The rounding mode - String - required
admin
bigdec precision -2.567 2 FLOOR
mentdb
-2.6
Rounding up
admin
bigdec precision 2.561 2 CEILING
mentdb
2.6
Truncate
admin
bigdec precision 2.569 2 DOWN
mentdb
2.5
bigdec round <x> <scale>
Description
Round to a number of decimals (rounding HALF_UP). A negative scale rounds to the tens, hundreds...
Round to a number of decimals (rounding HALF_UP). A negative scale rounds to the tens, hundreds...
Parameters
x: A decimal number - Number - required
scale: The number of decimals - Number - required
x: A decimal number - Number - required
scale: The number of decimals - Number - required
admin
bigdec round 3.14159 2
mentdb
3.14
admin
bigdec round 1234 -2
mentdb
1200
Money: 2 decimals
admin
bigdec round 19.995 2
mentdb
20.00
Integer
admin
bigdec round 2.5 0
mentdb
3
bigdec round <x> <scale> <mode>
Description
Round to a number of decimals with a rounding mode
Round to a number of decimals with a rounding mode
Parameters
x: A decimal number - Number - required
scale: The number of decimals - Number - required
mode: The rounding mode - String - required
x: A decimal number - Number - required
scale: The number of decimals - Number - required
mode: The rounding mode - String - required
admin
bigdec round 2.5 0 HALF_EVEN
mentdb
2
Round half up
admin
bigdec round 2.345 2 HALF_UP
mentdb
2.35
Truncate to 2 decimals
admin
bigdec round 2.349 2 DOWN
mentdb
2.34
Toward + infinity
admin
bigdec round -2.341 2 CEILING
mentdb
-2.34
Toward - infinity
admin
bigdec round -2.341 2 FLOOR
mentdb
-2.35
Unknown mode: error
admin
bigdec round 2.345 2 FOO
mentdb
Sorry, an error appears (unknown rounding mode 'FOO' (HALF_UP, HALF_EVEN, HALF_DOWN, UP, DOWN, CEILING, FLOOR)).
Worked example: Exact computations: money, fractions and large numbers (The decimal numbers of the computers (doubles) cannot represent 0.1 exactly; bigdec and arith compute exactly when it matters (money, fractions, number theory).)
admin
#Worked example: Exact computations: money, fractions and large numbers; #With doubles: 0.1 + 0.2 is not 0.3; math eval "0.1+0.2"; #Exactly with bigdec; bigdec sum "[0.1, 0.2]"; #Monthly payment of a loan of 200000 at 3 % for 20 years: P = C r / (1 - (1+r)^-n); math calc "200000*(0.03/12)/(1-(1+0.03/12)^(-240))"; #Rounded to the cent (half up); bigdec round (math calc "200000*(0.03/12)/(1-(1+0.03/12)^(-240))") 2 HALF_UP; #Total of the interest paid over the 240 months; math calc "1109.20*240-200000"; #Exact fractions: 1/3 + 1/6 + 1/2; arith frac_add (arith frac_add "1/3" "1/6") "1/2"; #A decimal as a fraction; arith to_fraction 0.125; #Exact factorial of 30; arith factorial 30; #Prime factors of a large number; arith factors 9999999967;
mentdb
[9999999967]
bigdec sqrt <x> <precision>
Description
Get the square root with a number of significant digits
Get the square root with a number of significant digits
Parameters
x: A decimal number - Number - required
precision: The number of significant digits - Number - required
x: A decimal number - Number - required
precision: The number of significant digits - Number - required
admin
bigdec sqrt 2 50
mentdb
1.4142135623730950488016887242096980785696718753769
sqrt(3) with 40 digits
admin
bigdec sqrt 3 40
mentdb
1.732050807568877293527446341505872366943
Perfect square
admin
bigdec sqrt 144 10
mentdb
12
sqrt(2) with 100 digits
admin
bigdec sqrt 2 100
mentdb
1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641573
bigdec strip <x>
Description
Remove the trailing zeros
Remove the trailing zeros
Parameters
x: A decimal number - Number - required
x: A decimal number - Number - required
admin
bigdec strip 12.500
mentdb
12.5
Integer with a decimal point
admin
bigdec strip 100.000
mentdb
100
No zero to remove
admin
bigdec strip 1.25
mentdb
1.25
bigdec e <precision>
Description
Get e with a number of significant digits (up to 10000, binary splitting)
Get e with a number of significant digits (up to 10000, binary splitting)
Parameters
precision: The number of significant digits - Number - required
precision: The number of significant digits - Number - required
admin
bigdec e 50
mentdb
2.7182818284590452353602874713526624977572470937000
e with 100 digits
admin
bigdec e 100
mentdb
2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427
e with 10 digits
admin
bigdec e 10
mentdb
2.718281828
bigdec mean <json_array> <precision>
Description
Get the exact mean of a JSON array of decimal numbers, with a number of significant digits
Get the exact mean of a JSON array of decimal numbers, with a number of significant digits
Parameters
json_array: A JSON array of decimal numbers - String - required
precision: The number of significant digits - Number - required
json_array: A JSON array of decimal numbers - String - required
precision: The number of significant digits - Number - required
admin
bigdec mean "[1, 2, 2]" 20
mentdb
1.6666666666666666667
Exact mean of money values
admin
bigdec mean "[19.99, 5.01, 0.10]" 10
mentdb
8.366666667
Mean with 30 digits
admin
bigdec mean "[1, 2, 4]" 30
mentdb
2.33333333333333333333333333333
bigdec pi <precision>
Description
Get pi with a number of significant digits (up to 10000, Chudnovsky formula)
Get pi with a number of significant digits (up to 10000, Chudnovsky formula)
Parameters
precision: The number of significant digits - Number - required
precision: The number of significant digits - Number - required
admin
bigdec pi 50
mentdb
3.1415926535897932384626433832795028841971693993751
100 digits of pi
admin
bigdec pi 100
mentdb
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068
10 digits
admin
bigdec pi 10
mentdb
3.141592654
1000 digits
admin
bigdec pi 1000
mentdb
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420199
bigdec sum <json_array>
Description
Get the exact sum of a JSON array of decimal numbers (0.1 + 0.2 = 0.3)
Get the exact sum of a JSON array of decimal numbers (0.1 + 0.2 = 0.3)
Parameters
json_array: A JSON array of decimal numbers - String - required
json_array: A JSON array of decimal numbers - String - required
admin
bigdec sum "[0.1, 0.2]"
mentdb
0.3
Money: no rounding error
admin
bigdec sum "[19.99, 5.01, 0.10]"
mentdb
25.10
Large and small numbers without loss
admin
bigdec sum "[1e20, 1, -1e20]"
mentdb
1
Negative values
admin
bigdec sum "[10.10, -3.33, -6.77]"
mentdb
0.00
