是否有人可以帮助我走出这个算术题一个JavaScript/jQuery的解决方案:货币数学在JavaScript
我需要减去从另一个数字。
问题是数字有一个美元符号(因为它的钱),因此jQuery将它们视为字符串而不是数字。
我已经创建了两个变量 - toalAssets
和totalLiabilites
。我想从前者中减去后者,并将结果放入另一个名为netWorth
的变量中。
也许我需要使用parseFloat()
?
但我不知道如何 - 这一切都超过了我的头!
是否有人可以帮助我走出这个算术题一个JavaScript/jQuery的解决方案:货币数学在JavaScript
我需要减去从另一个数字。
问题是数字有一个美元符号(因为它的钱),因此jQuery将它们视为字符串而不是数字。
我已经创建了两个变量 - toalAssets
和totalLiabilites
。我想从前者中减去后者,并将结果放入另一个名为netWorth
的变量中。
也许我需要使用parseFloat()
?
但我不知道如何 - 这一切都超过了我的头!
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
注:在JavaScript中建议处理钱作为表示美分(8512代替85.12)的数量的整数。这是为了避免浮点运算的问题。 0.1 + 0.2 == 0.3
在JavaScript中返回false,但幸运的是浮点整数运算是精确的,因此可以通过缩放来避免十进制表示错误。
您可能需要检查以下职位关于这一主题延伸阅读:Is JavaScript’s math broken?
您可以随时申请的货币符号格式当值呈现给浏览器。
道格拉斯Crockford的:JavaScript: The Good Parts: Appendix A - Awful Parts (page 105)。
已更新您的模式以允许使用否定。 – 2010-03-31 20:51:23
@Peter:感谢您的更新:) – 2010-03-31 20:59:14
感谢您对良好做法的建议。 – Jazzepi 2012-11-04 04:53:37
parseFloat()
将不起作用,因为您的字符串以非数字(美元符号)开头。
你可以简单地做一个替换删除美元符号,与parseFloat一起获得的价值:
totalAssets = parseFloat(totalAssets.replace('$', ''));
totalLiabilities = parseFloat(totalLiabilities.replace('$', ''));
var difference = '$' + (totalAssets - totalLiabilities);
这个代码用浮漂会将原始字符串。您也可以将它们加载到新变量中。同样,差异不一定要有'$'前置。
@Mark:他只被问了5个问题,并有36个代表,所以显然是新的网站。 – DisgruntledGoat 2010-03-31 20:47:48
@Jared:您可以回到您的旧问题(点击顶部的用户名),并在适当的时候接受他们的答案。更多的人可能会回答未来的问题。 – DisgruntledGoat 2010-03-31 20:48:44
“会员6个月” – 2010-03-31 20:49:21