gpt4 book ai didi

javascript - 大十进制 : how to set up the scale once

转载 作者:行者123 更新时间:2023-12-03 12:26:00 24 4
gpt4 key购买 nike

我正在使用Daniel Trebbien's BigDecimal library ,并且我正在尝试将比例设置为固定的小数位数。

我使用工厂方法在我的应用程序中以相同的比例创建所有小数:

function newBigDecimal(x){
return (new BigDecimal(x)).setScale(2, BigDecimal.prototype.ROUND_HALF_UP);
}

因此,当我对 bigdecimal 调用 BigDecimal.toString 或对它们进行求反、加法或减法时,结果字符串包含预期的小数位数。示例:

var pi = newBigDecimal("3.1416");
console.log(pi.toString());
//returns "3.14"

var e = newBigDecimal("2.7182");
console.log(e.toString());
//returns "2.72"

但是当我相乘时,所得小数的小数位数是原始小数的两倍:

var product = pi.multiply(e);
console.log(product.toString());
//returns "8.5408"

我必须再次调用 setScale 才能获得使用所需小数位数格式化的结果。

有没有办法配置一次比例,以便库始终使用并返回具有所需比例的小数?

最佳答案

我认为您处理这个问题的方式是错误的。小数位数不应该是数据在应用中存储方式的问题,而应该是当您想要表示格式化 BigDecimal 的问题> 它作为一个字符串。我会创建一个如下所示的函数:

function formatBigDecimal(decimals) {
//return string with provided amount of decimals
}

每次要打印时都使用它。

我认为设置比例只需要确保存储足够的小数,即出于计算目的,我不会在创建时 chop 为 2 位小数。始终尽可能晚地舍入以获得最大的准确性。

我无法立即找到该库的 API 引用,但我想您会找到的。

关于javascript - 大十进制 : how to set up the scale once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24205842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com