有没有人可以帮我解决这个算术问题的JavaScript/jQuery解决方案:
我需要从一个数字中减去另一个数字。
问题是这些数字有一个美元符号(因为这是钱),因此jQuery将它们视为字符串而不是数字。
我创建了两个变量 - totalAssets
和 totalLiabilites
。我想把后者从前者中减去,并把结果放到另一个名为netWorth
的变量中。
也许我需要使用 parseFloat()
?
但我不确定怎么做 - 这对我来说有点难度!
有没有人可以帮我解决这个算术问题的JavaScript/jQuery解决方案:
我需要从一个数字中减去另一个数字。
问题是这些数字有一个美元符号(因为这是钱),因此jQuery将它们视为字符串而不是数字。
我创建了两个变量 - totalAssets
和 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)来处理货币,以避免浮点算术问题。在JavaScript中,0.1 + 0.2 == 0.3
返回false,但幸运的是,浮点数中的整数算术是精确的,因此可以通过缩放来避免十进制表示误差。
您可能想查看以下文章以了解更多信息:JavaScript的数学是否有问题?
当值呈现到浏览器时,您始终可以应用货币符号格式。
1Douglas Crockford: JavaScript优良部分:附录A - 糟糕的部分(第105页)。
parseFloat()
无法工作,因为你的字符串以非数字符号——美元符号开头。
你可以简单地进行替换,删除美元符号,再使用parseFloat
获取值:
totalAssets = parseFloat(totalAssets.replace('$', ''));
totalLiabilities = parseFloat(totalLiabilities.replace('$', ''));
var difference = '$' + (totalAssets - totalLiabilities);
这段代码将原始字符串替换为浮点数。你也可以将它们加载到新变量中。同样,difference 不需要在前面添加 '$'。
var a = "$20";
var b = "$34";
var c = parseFloat(a.replace(/[^0-9\.]+/g, "")) - parseFloat(b.replace(/[^0-9\.]+/g, ""));
alert(c);