如何在 Node/Javascript 中丢弃数字的小数部分

how to discard fractional part of a number in Node/Javascript

本文关键字:数字 小数部 Node Javascript      更新时间:2023-09-26

我需要丢弃 Node 中数字的小数部分,但我无法得到正确的结果!!

parseInt(2.3*100) == 229

在 C 中很容易做到这一点:

(int) (2.3f * 100) == 230
(int) (2.305f * 100) == 230

如何在 Node 中执行此操作?

注意:someFunction(2.305 * 100)也应该等于230!

节点中的一些测试:

$ node
> 2.3*100 == 230
false
> parseInt(2.3*100)
229
> (2.3*100)|0
229
> (2.3*100).toFixed(0)
'230'
> (2.305*100).toFixed(0)
'231'
> Math.round(2.3*100)
230
> Math.round(2.305*100)
231
> Math.floor(2.3*100)
229

对此没有很好的解决方法。大多数小数不能完全表示为二进制分数。在此处阅读更多内容: https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

安装十进制 fron npm: npm install decimal并按如下方式使用:

var Decimal = require('decimal');
parseInt(Decimal('2.3').mul('100').toNumber());