如何在javascript中将大十进制值转换为十进制

时间:2015-01-26 10:00:25

标签: javascript bigdecimal

var zx =1800;

我在大十进制值中有一些值我需要在javascript中将其转换为十进制。

我尝试使用zx.doubleValue()方法,但我在浏览器控制台中收到"Uncaught ReferenceError: Double is not defined"错误。

2 个答案:

答案 0 :(得分:0)

据我了解,您从后端收到大十进制数。 JavaScript的问题在于,本机Number类型的精度受到限制,因此大十进制将被截断。

您可以使用其中一个库,例如,大数: https://www.npmjs.com/package/big-numbers

这将使您可以将收到的后端号码转换为大号码:

const bigNumberValue = numbers.of([received from backend value]);

完成后,您可以执行任何必需的操作:加,乘等。请在此处查看JavaScript教程:

http://bignumbers.tech/tutorials/java-script

答案 1 :(得分:0)

var bigdecimal = require("bigdecimal");

var i = new bigdecimal.BigInteger("1234567890abcdefghijklmn", 24);
console.log("i is " + i);
// Output: i is 60509751690538858612029415201127

var d = new bigdecimal.BigDecimal(i);
var x = new bigdecimal.BigDecimal("123456.123456789012345678901234567890");
console.log("d * x = " + d.multiply(x));
// Output: d * x = 7470299375046812977089832214047022056.555930270554343863089286012030

var two = new bigdecimal.BigDecimal('2');
console.log("Average = " + d.add(x).divide(two));
// Output: Average = 30254875845269429306014707662291.561728394506172839450617283945

var down = bigdecimal.RoundingMode.DOWN();
console.log("d / x (25 decimal places) = " + d.divide(x, 25, DOWN));
// Output: d / x (25 decimal places) = 490131635404200348624039911.8662623025579331926181155