带有 4 位小数的货币格式正则表达式,如果没有则不显示美分
Posted
技术标签:
【中文标题】带有 4 位小数的货币格式正则表达式,如果没有则不显示美分【英文标题】:Currency format regex with 4 decimals that does not show cents if there aren't any 【发布时间】:2020-06-12 18:27:03 【问题描述】:我正在使用这个正则表达式 here,但有 4 个小数,所以
val.toFixed(4).replace(/\d(?=(\d3)+\.)/g, '$&,');
但希望进行以下更改。
如果小数为 0,例如 9.0000,则显示 9
如果只有 1 或 2 位小数,则显示 2 位小数
9.5000,显示 9.50
否则显示 4 位小数
有没有办法做到这一点?谢谢
【问题讨论】:
嗨,为什么不使用Math.fround
,然后在需要时添加额外的0?
@Yanis-git 在哪种情况下?
【参考方案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 已编辑,检查。我认为所有内容都涵盖了。以上是关于带有 4 位小数的货币格式正则表达式,如果没有则不显示美分的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 正则表达式,用于带有一个点和 2 个小数的正数
如何使用 TextWatcher Android 将 3 位小数货币格式添加到edittext