JavaScript中的货币数学

swi*_*ony 14 javascript jquery

有人可以帮我解决这个算术问题的JavaScript/jQuery解决方案:

我需要从另一个中减去一个数字.

问题是数字有一个美元符号(因为它的钱),因此jQuery将它们视为字符串而不是数字.

我创建了两个变量 - toalAssetstotalLiabilites.我想从前者中减去后者并将结果放入另一个名为的变量中netWorth.

也许我需要用parseFloat()

但我不知道怎么样 - 这一切都在我头上!

Dan*_*llo 29

var totalLiabilites = '$52.34';
var toalAssets      = '$85.12';
var pattern         = /[^0-9.-]+/g;

var result = parseFloat(toalAssets.replace(pattern, '')) -
             parseFloat(totalLiabilites.replace(pattern, ''));

// result: 32.78
Run Code Online (Sandbox Code Playgroud)

注意:在JavaScript中,建议1将货币处理为表示分数(8512而不是85.12)的整数.这是为了避免浮点运算的问题.0.1 + 0.2 == 0.3在JavaScript中返回false,但幸运的是浮点中的整数运算是精确的,因此可以通过缩放避免十进制表示错误.

您可能需要查看以下帖子以进一步阅读此主题:JavaScript的数学运算是否已损坏?

在将值呈现给浏览器时,您始终可以应用货币符号格式.


1 Douglas Crockford:JavaScript:好的部分:附录A - 可怕的部分(第105页).


Jef*_*f B 6

parseFloat() 将无效,因为您的字符串以非数字(美元符号)开头.

您只需执行替换以删除美元符号,并使用parseFloat获取值:

totalAssets = parseFloat(totalAssets.replace('$', ''));
totalLiabilities = parseFloat(totalLiabilities.replace('$', ''));

var difference = '$' + (totalAssets - totalLiabilities);
Run Code Online (Sandbox Code Playgroud)

此代码用浮点数替换原始字符串.您也可以将它们加载到新变量中.同样,差异不一定要有'$'.