【问题标题】:How to convert a value to currency format with 2 decimals?如何将值转换为具有 2 位小数的货币格式?
【发布时间】:2019-03-01 10:32:25
【问题描述】:

如何将给定值的最后 2 个数字转换为货币值的小数?

示例:2499 应该是 24,99,而不是我目前得到的 2,499.00。

var price = $('.album').data("totalprice");
    
var newPrice = price.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');

console.log(newPrice);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="album" data-totalprice="2499"></div>

【问题讨论】:

  • 假设您使用, 作为小数分隔符,将原始值除以100
  • 无论出于何种原因,我们在这里都投了两票.....如果我知道答案或者我在这里找到了现有的解决方案,我就不会寻求帮助
  • 我没有对你投反对票,但我想这是因为这是一个非常简单的数学问题。

标签: jquery currency


【解决方案1】:

将金额除以 100 后使用Intl.NumberFormat

const n = 2499;
const f = new Intl.NumberFormat('de-DE', {
  style: 'currency',
  currency: 'EUR'
}).format(n / 100);
console.log(f);

查看可用的不同参数here。当然你也可以用 Schweizer Franken 作为你的货币

【讨论】:

  • 给出的两个答案都有效且超级。我将另一个作为接受的答案,因为该解决方案更接近我以前的代码。非常感谢您的宝贵时间!
【解决方案2】:

使用 \d{2} 并使用 split 删除尾随的 .00

var price = $('.album').data("totalprice");
    
var newPrice = price.toFixed(2).replace(/\d(?=(\d{2})+\.)/g, '$&,');

console.log(newPrice.split('.')[0]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="album" data-totalprice="2499"></div>

【讨论】:

  • 给出的两个答案都有效且超级好。我将此作为公认的答案,因为该解决方案更接近我以前的代码。非常感谢!
  • 嗯,还没完。如果原始价格是 2 位数字 + 2 位小数,它确实可以正常工作。如果价格是 3 位长 + 2 位小数,结果会出现一些奇怪的东西。例如。 16749 应该是 167,49,但结果是 1,67,49
猜你喜欢
  • 2017-08-15
  • 2014-02-23
  • 1970-01-01
  • 2020-10-25
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
  • 2022-12-03
相关资源
最近更新 更多