【问题标题】:JavaScript Math Function: How to Format Answer w/ Comma in Thousandths Place [duplicate]JavaScript数学函数:如何用千分位逗号格式化答案[重复]
【发布时间】:2013-06-01 07:45:34
【问题描述】:

我正在编写一个 javascript 代码,允许用户计算他们的奖金是多少。这是简单的数学。年薪 x 支付百分比 = 您的支付。

一切都已构建并且可以正常工作,但我有一个格式问题。

与其将您的支付金额显示为 4000.3 美元,我希望在其中添加一个逗号,并在美分部分添加一个零,这样它就显示为... 4,000.30 美元。 (这个金额只是一个例子)

我不知道该怎么做。在下面的代码计算中,我计算了薪水 * 支付 / 100,然后是 Math.round 以便将其四舍五入到小数点后两位,但我不知道要添加什么或调整什么以使其添加以千为单位的逗号(顺便说一句,它永远不会以百万为单位),然后在末尾添加一个零,如果像上面的示例一样,它会将其保留为 0.30。

感谢任何帮助。我只需要被引导到正确的方向。谢谢!

这是计算器这部分的代码:

<script type="text/javascript">
function calculate()
{
   var salary = document.calculateBonus.salary.value;
   var payout = document.calculateBonus.payout.value;
   var answer = (salary * payout / 100);
   answer = Math.round(answer * 100) / 100;
   if(document.calculateBonus.salary.value == "" )
   {
     alert("Please enter your salary");
     document.calculateBonus.salary.focus();
     return false;
   }
   if(document.calculateBonus.payout.value == "" )
   {
     alert("Please put in your payout percentage");
     document.calculateBonus.payout.focus();
     return false;
   }
   (document.getElementById('payoutText').innerHTML =
   ("Your Bonus Payout is $" + answer));
   return false;
}
</script>

【问题讨论】:

标签: javascript


【解决方案1】:

这似乎适用于您的简单用例

var answer = salary.toFixed(2);                     // convert to string
answer = answer.replace(/(\d)(\d{3})\./, "$1,$2."); // look for four digits and '.'

可以使用更短的正则表达式...

【讨论】:

  • 我猜你宁愿需要一个更长的正则表达式 :-) 另外,你的只适用于 4 位数字
  • 为什么需要更长的?顺便说一句,它也适用于 5 位和 6 位数字。
  • 只是意味着处理更一般情况的"standard" pattern 更长 - 你几乎找不到比你更短的东西。
  • 非常感谢!那行得通。我很抱歉这是一个重复的帖子。我遇到的问题的第二部分是独一无二的,但您对第一部分的回答实际上使一切都按照我需要的方式完美。再次感谢!
  • 如果第二部分的意思是尾随0 得到小数点后两位数,这就是第一行的作用。
猜你喜欢
  • 2022-12-06
  • 2017-08-23
  • 1970-01-01
  • 2015-04-13
  • 2014-11-16
  • 1970-01-01
  • 2015-07-18
  • 1970-01-01
  • 2015-03-25
相关资源
最近更新 更多