【发布时间】:2019-04-15 15:17:05
【问题描述】:
我知道类似的问题已经被问过几次了。 这里的区别是,我不能使用使用 .toLocalString() 或美妙的 Intl.NumberFormat() 的解决方案。
相反,我必须从头开始构建格式化程序,并且我已经开始使用这部分代码:
var currCurrency = "EUR";
function Format__Currency(val, currency) {
switch (currency) {
case 'EUR':
currencyFormat = '0,00';
val = val.replace('.', ',');
val = currencyFormat.replace('0,00', val);
break;
case 'CHF':
currencyFormat = '0.00';
val = val.replace(',', '.');
val = currencyFormat.replace('0.00', val);
break;
case 'USD':
currencyFormat = '0.00';
val = currencyFormat.replace('0.00', val);
break;
default:
throw new Error('Unknown currency format');
break;
}
return val;
}
var price = Format__Currency("1929.90", "EUR")
$("#result").html(price);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div id="result"> - </div>
“手动版本”对我来说没问题,因为我只需要支持 4 或 5 种货币,我会找出它们的格式。
我的问题是目前我只能更改小数位的分隔符。但是也有不同的千位分隔符。例如,美元 1,920.90,欧元 1.920,90 或瑞士法郎 1'920.90。
如何解决?
PS:如果投反对票的可以告诉我这个问题有什么问题?
【问题讨论】:
-
请解释你为什么
cannot use a solution that uses .toLocalString() or the wonderful Intl.NumberFormat(). -
因为这些值目前还没有从后端传递到前端。我只知道货币,但我不知道地区(de-DE、de-CH、en-US ...)。而且在我的情况下,位于德国的用户很可能在他的应用程序中使用美元计算。或者瑞士人使用欧元。
-
这并不能解释为什么您不能使用标准方法将数字格式化为货币。
-
嗯,我不知道如何动态地做到这一点?
-
不完全正确,欧元的格式取决于地区/国家 - 例如,爱尔兰使用正常的 1,920.90,德国使用混乱的 1.920,90。正如@Archer 所说,如果问题不是浏览器兼容性,我不明白为什么不能使用上述方法。您的语言环境来自
navigator.language。
标签: javascript jquery currency currency-formatting