【问题标题】:Currency format regex with 4 decimals that does not show cents if there aren't any带有 4 位小数的货币格式正则表达式,如果没有则不显示美分
【发布时间】:2020-06-12 18:27:03
【问题描述】:

我正在使用这个正则表达式 here,但有 4 个小数,所以

val.toFixed(4).replace(/\d(?=(\d{3})+\.)/g, '$&,');

但希望进行以下更改。

如果小数为 0,例如 9.0000,则显示 9

如果只有 1 或 2 位小数,则显示 2 位小数

9.5000,显示 9.50

否则显示 4 位小数

有没有办法做到这一点?谢谢

【问题讨论】:

  • 嗨,为什么不使用Math.fround,然后在需要时添加额外的0?
  • @Yanis-git 在哪种情况下?

标签: javascript string number-formatting


【解决方案1】:

你可以这样做:

已编辑用户评论:

var val= "9.5493";
if (val.indexOf(".0000")>=0) {
var val = val.replace(".0000", "");
}
if (val.indexOf(".00")>=0) {
var val = val.replace(".00", "");
}

var res = val.split(".");
var1=res[0];
var2=res[1];

if (var2 && var2.indexOf("000")>=0) {
var res = var2.replace("000", "0");
var val = var1+"."+res;
}else{
var val = val;
};


console.log(val);

var val= "9.0000";
if (val.indexOf(".0000")>=0) {
var val = val.replace(".0000", "");
}
if (val.indexOf(".00")>=0) {
var val = val.replace(".00", "");
}

var res = val.split(".");
var1=res[0];
var2=res[1];

if (var2 && var2.indexOf("000")>=0) {
var res = var2.replace("000", "0");
var val = var1+"."+res;
}else{
var val = val;
};


console.log(val);

var val= "90000";
if (val.indexOf(".0000")>=0) {
var val = val.replace(".0000", "");
}
if (val.indexOf(".00")>=0) {
var val = val.replace(".00", "");
}

var res = val.split(".");
var1=res[0];
var2=res[1];

if (var2 && var2.indexOf("000")>=0) {
var res = var2.replace("000", "0");
var val = var1+"."+res;
}else{
var val = val;
};


console.log(val);

var val= "9.5000";
if (val.indexOf(".0000")>=0) {
var val = val.replace(".0000", "");
}
if (val.indexOf(".00")>=0) {
var val = val.replace(".00", "");
}

var res = val.split(".");
var1=res[0];
var2=res[1];

if (var2 && var2.indexOf("000")>=0) {
var res = var2.replace("000", "0");
var val = var1+"."+res;
}else{
var val = val;
};



console.log(val);

【讨论】:

  • 我想你错过了一个点 val.replace("000", "0");应该是 val.replace(".000", "0");
  • @user3808307 不,那条线会将您的 9.5000 案例四舍五入到 9.50,或任何其他尾随 000 的行,其中没有点。 “9.5000,显示 9.50”,如果你有这样的情况,你可以再添加一个。你没有在你的问题中提到这一点。
  • 那么它是错误的,因为它会将 90000000 转换为 900000
  • @user3808307 你是对的,那条线需要一点工作。让我检查一下。
  • @user3808307 已编辑,检查。我认为所有内容都涵盖了。
猜你喜欢
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 2022-08-06
  • 1970-01-01
  • 2021-11-16
  • 2017-03-30
  • 2012-11-30
  • 1970-01-01
相关资源
最近更新 更多