進(jìn)入我的主頁,查看更多JS的分享妒潭!
我的代碼有多短悴能,本篇內(nèi)容就有多短!
先實(shí)現(xiàn)標(biāo)題的內(nèi)容雳灾,貼出代碼:
//格式化金額的輸入
function formatPrice(p) {
if (!p) {
return "0.0";
} else {
p += "";
//去除非數(shù)字漠酿,只保留數(shù)字和.
p = p.replace(/[^\d.]/g, "");
//必須保證第一個為數(shù)字而不是.
p = p.replace(/^\./g, "0.");
// 保留第一個.
p = p.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
// 保留第一個.
// p = p.replace(/\.{2,}/g, ".");
//只取一位小數(shù) 不進(jìn)位,{1}表示保留1位小數(shù)
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
補(bǔ)充
//只保留一位小數(shù)炒嘲,{0,2}表示保留兩位
p = Number(p.toString().match(/^\d+(?:\.\d{0,1})?/));
//保留一位小數(shù),且小數(shù)位四舍五入
p = parseFloat(p).toFixed(1);
如果你用了其它方法來實(shí)現(xiàn)匈庭,其中不建議進(jìn)行乘法除法的運(yùn)算夫凸,因?yàn)閖s的加減乘除,在帶小數(shù)時可能會丟失精度(雖然有解決辦法嚎花,但放在這里就麻煩了)寸痢。
然后就沒有然后了呀洲,歡迎補(bǔ)充紊选。