我正在尝试处理诸如23.45之类的JavaScript值,但我希望能够对这些值(加法,减法,乘法,除法)进行数学运算,而不会遇到浮点问题。是的,我有时可能需要对结果进行舍入,但我希望它给出合理的答案。
在javascript中考虑这个:
24.56 * .3
产量
7.36799999999
我希望它能与7.368一起发布。
大多数语言都有十进制或货币数据类型来处理这个问题。有没有人构建了一个可以有效处理这类数据的类,或者是否有其他解决方案来处理这些类型的数字而不必经常调整浮点错误?
答案 0 :(得分:9)
整数。
不需要使用浮点货币。使用定点,小数点为0。
你算一分钱(或者可能是十分之一便士)。
答案 1 :(得分:4)
而不是使用整数(有自己的问题)
我会使用bignumber.js库
答案 2 :(得分:2)
有Math
Math对象构建在JavaScript规范中,因此每个浏览器本身都有它。
对于数据类型,JavaScript有Number
。就是这样。我们没有其他数字数据类型。最好的想法是尝试使用Integers。
答案 3 :(得分:1)
进行更多搜索,我遇到了这个。
https://stackoverflow.com/questions/744099/javascript-bigdecimal-library
看起来没有一个是理想的,但他们做的工作。
答案 4 :(得分:1)
ku4jQuery-kernel包含money类和包含操作和舍入的数学实用程序,包括round,roundUp和roundDown。这些是很好的方法,因为你可以传递一个值来舍入到。例如,您可以执行$ .math.round(3.4567,-2),它会将数字3.4567舍入到最接近的10 ^ -2。钱也一样。 $ .money(100.87).divide(2).roundUp()。toString()将产生“$ 50.44”。你可以进一步增加货币面额作为第二个参数,比如说“B”代表比特币,$ .money(100.87,“B”)。divide(2).roundUp()。toString()。您可以在此处找到有关此库的更多信息ku4jQuery-kernel以及您可能在此处找到的更多有用的库kodmunki github。这些库得到了密切维护,并在许多生产项目中使用。如果您决定尝试它们,我希望您发现它们有用!快乐的编码:{}}
答案 5 :(得分:1)
街区的新手:moneysafe
。它是开源的,并使用一种允许智能合成的功能方法。
$(.1) + $(.2) === $(.3).cents;
答案 6 :(得分:0)
toFixed method可以舍入到给定的小数位数。
还有一个JavaScript sprintf实现。