我需要为网站用户界面做一些基本的浮点数学(添加和倍增钱)。我知道Javascript浮动因为它们的存储方式不准确,但我也知道不知何故,我可以获得所需的准确度。我知道这是因为谷歌的计算器可以做到这一点(在Goog中键入“计算器”)..
无论如何,我不想将我的小数字发送回服务器并且必须等待响应,所以我正在尝试使用名为BigNumbers.js的库,但我不能弄清楚如何使它吐出数字(或字符串),无论我调用什么,它都会返回一个BigNumber对象。
这是我的测试代码:JSFiddle
floats = [145, 1.44, 1.3];
sum = new BigNumber(0);
for(i=0; i<floats.length; i++){
sum = sum.times(floats[i]);
}
// sum = sum.toDigits(); //returns object
// sum = sum.toString(); //returns 0
console.log(sum); // expecting 271.44, getting object
如何达到预期效果?如果有一个更好的库可供使用,那也是一个可以接受的答案。
谢谢。
答案 0 :(得分:3)
您希望将sum
初始化为1
而不是0
(并可能将其名称更改为product
),然后调用.toString()
当你把它传递给console.log()
:
console.log(sum.toString());
编辑 - 另外,正如评论中所指出的,你应该设置小数位数(可能是2)并设置舍入模式。您可以通过BigNumber.config()
来电。
答案 1 :(得分:1)
你可以使用JavaScript浮动值和Math.round(..)
方法来解决这个问题:
var floats = [145, 1.44, 1.3];
sum = 1;
for (i=0; i<floats.length; i++){
sum = Math.round(sum * floats[i] * 100)/100;
}
console.log(sum.toFixed(2)); // expecting 271.44