除大数时有没有办法获得更精确的结果?
Posted
技术标签:
【中文标题】除大数时有没有办法获得更精确的结果?【英文标题】:Is there a way to get more precise result when dividing Big Number? 【发布时间】:2019-07-28 14:15:44 【问题描述】:我需要对 Big Numbers 进行操作,但我需要精确的结果,如下所示:
const BN = require('bn.js');
var a = 11060622312717714974
var b = 1570481433500000000000;
console.log(a/b); //0.0070428227146040415
当我使用大数字时,我只得到0
,没有精度:
var aBN = new BN('11060622312717714974');
var bBN = new BN('1570481433500000000000');
console.log(aBN.div(bBN).toString()); //0
这个库可以得到精确的结果吗?
【问题讨论】:
【参考方案1】:不熟悉该库,但查看README.md
文件,它说:
注意:此库不支持小数。
所以,根据这个,答案是否定的。
见https://github.com/indutny/bn.js/#usage。
【讨论】:
有没有可能通过告诉 javascript(显式或隐式)我们希望我们的结果是内置的Number
类型而不是 no-decimals-for-you 来解决这个问题BN
类型?【参考方案2】:
精确是计算机科学中一个有趣的词,JavaScript 也不例外。
注意 输入 与 输出 相比:
console.log( 11060622312717714974 )
你并不总是得到你想要的。
还有这样的情况:
console.log( .1 + .2 );
console.log( (.1 + .2) === .3 );
所以,可能不是您想听到的,但事先知道这一点,您可以也许解决它。
不管怎样,结帐https://github.com/MikeMcl/bignumber.js/
【讨论】:
@johnerfx 一个常见的解决方法是乘以你的浮点数(乘以 10^x,其中 x 是小数点后的位数),进行除法,然后除(除以 10 ^x) 再次获得“精确”结果。以上是关于除大数时有没有办法获得更精确的结果?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法获得一个唯一的 id 来识别 Chromecast 设备?