npm使用
npm install --save js-big-decimal
js使用
下载地址:https://download.csdn.net/download/selectDele/15119663
var bigDecimal = require('js-big-decimal');
bigDecimal(number)
创建一个类型为BigDecimal的新对象。支持类型number
和的参数string
。如果传递的字符串无法解析,则将引发数字错误。建议使用字符串,因为它可以避免JS本机float
实现的精度问题和的最大限制integer
。
它支持幂运算,但仅具有整数幂。
var n1 = new bigDecimal (12.6789 );
var n2 = new bigDecimal (“ 12345.6789” );
var n3 = new bigDecimal ('12 .456e3' ); // 12456
getValue()
返回一个字符串格式的值
console.log(n2.getValue());
//12345.6789
getPrettyValue(number, digits, separator)
默认情况下,这将以标准数字格式返回数字,每三位数后加一个逗号。这两个参数digits
-用于分组的(整数部分的)位数,和separator
-标记分隔符的字符。例如,可以格式化16位数字作为信用卡。
var value = bigDecimal 。getPrettyValue (“ 12345.6789” ); // value =“ 12,345.6789”
或者,使用instance属性。返回结果为string
。
ar n3 = n2.getPrettyValue(); // n4 = "12,345.6789"
var num = new bigDecimal(1234567890123456)
var card = num.getPrettyValue(4, '-'); // cardNumber = "1234-5678-9012-3456"
round(number, precision, roundingMode)
将舍入后的值返回到指定的精度(十进制后的位数)。HALF_EVEN
如果未传递任何参数,则默认精度设置为0,舍入模式设置为。
var value = bigDecimal.round("123.678", 2); // value = "123.68"
或者,使用instance属性。返回结果为bigDecimal
。
var n3 = n1.round(2); // n3 = new bigDecimal("12.68")
var n4 = n2.round(); // n4 = new bigDecimal("12346")
传递负数以四舍五入为整数将返回最接近的10的幂的倍数。如果参数的大小大于或等于要舍入的数字整数部分中的位数,zero
则返回。
var val1 = bigDecimal.round("123.78", -2); // val1 = "100"
var val2 = bigDecimal.round("587", -1); // val2 = "590"
var val3 = bigDecimal.round("123.78", -4); // val3 = "0"
舍入还支持以下舍入模式(与Java 8相同):
CEILING
-舍入模式向正无穷大舍入。DOWN
-舍入模式向零舍入。FLOOR
-舍入模式向负无穷大舍入。HALF_DOWN
-舍入模式向“最近的邻居”舍入,除非两个邻居都等距,在这种情况下舍入。HALF_EVEN
-舍入模式向“最近的邻居”舍入,除非两个邻居都等距,在这种情况下,向偶数邻居舍入。HALF_UP
-舍入模式向“最近的邻居”舍入,除非两个邻居都等距,在这种情况下舍入。UNNECESSARY
(!未实现!)-舍入模式可以断言所请求的操作具有准确的结果,因此不需要舍入。UP
-舍入模式从零舍入。
有关模式的详细说明,请参见舍入模式。
var num = new bigDecimal("123.657");
var numRound1 = num.round(1, bigDecimal.RoundingModes.DOWN); // "123.6"
var numRound2 = num.round(2, bigDecimal.RoundingModes.CEILING); // "123.66"
floor(number)
返回最接近但不大于输入数字的整数。
var n1 = bigDecimal.floor(12.8) // "12"
var n2 = bigDecimal.floor(-12.3) // "-13"
实例函数以新的形式返回结果 bigDecimal
var n1 = new bigDecimal(12.8).floor() // bigDecimal(12)
var n2 = bigDecimal(-12.3).floor() // bigDecimal(-13)
ceil(number)
返回最接近但不小于输入数字的整数。
var n1 = bigDecimal.ceil(12.8) // "13"
var n2 = bigDecimal.ceil(-12.3) // "-12"
实例函数以新的形式返回结果 bigDecimal
var n1 = new bigDecimal(12.8).ceil() // bigDecimal(13)
var n2 = bigDecimal(-12.3).ceil() // bigDecimal(-12)
compareTo(number1, number2)
比较两个数字。1, 0 and -1
如果number1 > number2, number1 == number2 and number1 < number2
分别返回。
var value = bigDecimal.compareTo("23.678", "67.34"); // value = -1
var value = bigDecimal.compareTo("23.678", "23.6780"); // value = 0
var value = bigDecimal.compareTo("123.678", "67.34"); // value = 1
或者,使用instance属性。返回结果为Integer
。
var n1 = new bigDecimal('1234');
var n2 = new bigDecimal('8765');
var value = n1.compareTo(n2); // value = -1
negate(number)
返回给定数字的负数。
var value = bigDecimal.negate("123.678"); // value = "-123.678";
或者,使用instance属性。它将结果作为new返回bigDecimal
。
var n = new bigDecimal('-1234');
var value = n.negate(); // value = new bigDecimal('1234')
add(augend, addend)
加两个数字。传递负数以进行减法。确保参数为string
var sum = bigDecimal.add("23.678", "67.34"); // sum = "91.018"
var diff = bigDecimal.add("67.34", "-23.678"); // diff = "43.662"
或者,使用instance属性。它将结果作为new返回bigDecimal
。
var n1 = new bigDecimal('1234');
var n2 = new bigDecimal('8765');
var sum = n1.add(n2); // sum = new bigDecimal('9999')
subtract(minuend, subtrahend)
从另一个减去一个数字
var diff = bigDecimal.subtract("67.34", "23.678"); // diff = "43.662"
或者,使用instance属性。它将结果作为new返回bigDecimal
。
var n1 = new bigDecimal('12.67');
var n2 = new bigDecimal('130.7');
var diff = n1.subtract(n2); // diff = new bigDecimal('-118.03')
multiply(multiplicand, multiplier)
将两个数字相乘。确保参数为string
s。
var product = bigDecimal.multiply("-0.13", "0.00130"); // product = "-0.000169"
或者,使用instance属性。它将结果作为new返回bigDecimal
。
var n1 = new bigDecimal('-0.13');
var n2 = new bigDecimal('0.00130');
var product = n1.multiply(n2); // product = new bigDecimal('-0.000169')
divide(dividend, divisor, precision)
除以两个数字。像string
调用bigDecimal一样传递参数,或者如果调用object则传递bigDecimal的实例。precision
是可选参数,默认值为8。
var quotient = bigDecimal.divide('45', '4', 2); // quotient = '11.25'
或者,使用instance属性。它将结果作为new返回bigDecimal
。
var n1 = new bigDecimal('45');
var n2 = new bigDecimal('4');
var quotient = n1.divide(n2); // quotient = new bigDecimal('11.25')
modulus(dividend, divisor)
获得两个数字的模数,即除数除以除数后的余数。请注意,除数和除数都必须是整数。
var remainder = bigDecimal.modulus('45', '4'); // remainder = '1'
或者,使用instance属性。它将结果作为new返回bigDecimal
。
var n1 = new bigDecimal('45');
var n2 = new bigDecimal('4');
var remainder = n1.modulus(n2); // remainder = new bigDecimal('1')
此外,结果取除数的符号,除数的符号被忽略。请注意,此行为与Java和JavaScript中的行为相同。