首页 > 解决方案 > 带有 4 位小数的货币格式正则表达式,如果没有则不显示美分

问题描述

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

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

但想进行以下更改。

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

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

9.5000,显示 9.50

否则显示 4 位小数

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

标签: javascriptstringnumber-formatting

解决方案


你可以这样做:

编辑用户评论评论:

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);


推荐阅读