欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS:如何控制金额的输入,处理为允许的格式?(保留一位或两位小数)

程序员文章站 2022-04-14 14:00:13
进入我的主页,查看更多JS的分享!我的代码有多短,本篇内容就有多短!先实现标题的内容,贴出代码://格式化金额的输入function formatPrice(p) { if (!p) { return "0.0"; } else { p += ""; //去除非数字,只保留数字和. p = p.replace(/[^\d.]/g, ""); //必须保证第一个为数字而不是. p = p.replace(/^\./g, "0.");....

进入我的主页,查看更多JS的分享!

我的代码有多短,本篇内容就有多短!

先实现标题的内容,贴出代码:

//格式化金额的输入
function formatPrice(p) {
  if (!p) {
    return "0.0";
  } else {
    p += "";
    //去除非数字,只保留数字和.
    p = p.replace(/[^\d.]/g, "");

    //必须保证第一个为数字而不是.
    p = p.replace(/^\./g, "0.");

    // 保留第一个.
    p = p.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
    // 保留第一个.
    // p = p.replace(/\.{2,}/g, ".");

    //只取一位小数 不进位,{1}表示保留1位小数
    p = p.replace(/^(\-)*(\d+)\.(\d{1}).*$/, "$1$2.$3");

    // 返回时 处理0199、0.这种情况
    return parseFloat(p);
  }
}

测试效果:

console.log(formatPrice("哈哈10.嘿嘿5.99.589"));
//输出:10.5

console.log(formatPrice("哈哈.嘿嘿5.99.589"));
//输出:0.5

补充:

//只保留一位小数,{0,2}表示保留两位
p = Number(p.toString().match(/^\d+(?:\.\d{0,1})?/));
//保留一位小数,且小数位四舍五入
p = parseFloat(p).toFixed(1);

如果你用了其它方法来实现,其中不建议进行乘法除法的运算,因为js的加减乘除,在带小数时可能会丢失精度(虽然有解决办法,但放在这里就麻烦了)。
然后就没有然后了,欢迎补充。

JS:如何控制金额的输入,处理为允许的格式?(保留一位或两位小数)

本文地址:https://blog.csdn.net/yyl262/article/details/107267145