js中常见的金额转换方式

1.js转换金钱为中文单位元、万元、亿元、万亿

javascript 复制代码
function unitConvert(num) {
   var moneyUnits = ["元", "万元", "亿元", "万亿"]
   var dividend = 10000;
   var curentNum = num;
   //转换数字
   var curentUnit = moneyUnits[0];
   //转换单位
    for (var i = 0; i <4; i++) {
           curentUnit = moneyUnits[i]
           if(strNumSize(curentNum)<5){
           break;
       }
       curentNum = curentNum / dividend
}
var m = {num: 0, unit: ""}
      m.num = curentNum.toFixed(2)
      m.unit = curentUnit;
      return m;
     }
 
function strNumSize(tempNum){
      var stringNum = tempNum.toString()
      var index = stringNum.indexOf(".")
      var newNum = stringNum;
      if(index!=-1){
          newNum = stringNum.substring(0,index)
       }
       return newNum.length
}
 
//调用并且得到返回值
var data=unitConvert(100000);
console.log(data.num+data.unit) //10.00万元

2. 金额格式化处理

javascript 复制代码
 // 金额 格式化
function  outputmoney(value) {  
      if (!value && value !== 0) return '-';
      var intPart = Number(value) | 0; //获取整数部分
      var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断
  
      var floatPart = ".00"; //预定义小数部分
      var value2Array = value.toString().split(".");
  
      //=2表示数据有小数位
      if (value2Array.length == 2) {
          floatPart = value2Array[1].toString(); //拿到小数部分
  
          if (floatPart.length == 1) { //补0,实际上用不着
              return intPartFormat + "." + floatPart + '0';
          } else {
              return intPartFormat + "." + floatPart;
          }
      } else {
          return intPartFormat + floatPart;
      }
    }
console.log(outputmoney(1111)); //1,111.00
console.log(outputmoney(11.56812111111)); //11.56812111111

// style 格式化时使用的样式
// "decimal"表示纯数字格式 , "currency"表示货币格式, 和"percent"表示百分比格式; 默认值是 "decimal"

// currency  在货币格式化中使用的货币符号
// "USD" 表示美元, "EUR" 表示欧元, "CNY"是人民币
// 没有默认值,如果样式是"currency",必须提供货币属性. minimumFractionDigits
// 使用的小数位数的最小数目.可能的值是从0到20;默认为普通的数字和百分比格式为0;
// 格式化金额(后面两位小数会四舍五入)
function  moneyFormats(value){
		let a=Number(value);  //转为数字格式
		
		let b=a.toLocaleString('zh', { style: 'currency', currency: 'CNY' });
		
		return b;
	}

console.log(moneyFormats(23.547))    //¥23.55
javascript 复制代码
function formatMoney(s, type) {  
    if (/[^0-9\.]/.test(s))  
        return "0";  
    if (s == null || s == "")  
        return "0";  
    s = s.toString().replace(/^(\d*)$/, "$1.");  
    s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");  
    s = s.replace(".", ",");  
    var re = /(\d)(\d{3},)/;  
    while (re.test(s))  
        s = s.replace(re, "$1,$2");  
    s = s.replace(/,(\d\d)$/, ".$1");  
    if (type == 0) {// 不带小数位(默认是有小数位)
        var a = s.split(".");  
        if (a[1] == "00") {  
            s = a[0];  
        }  
    }  
    return s;  
}  
console.log(formatMoney('11110.335',3)); // 11,110.33
相关推荐
web小白成长日记3 小时前
企业级 Vue3 + Element Plus 主题定制架构:从“能用”到“好用”的进阶之路
前端·架构
APIshop4 小时前
Python 爬虫获取 item_get_web —— 淘宝商品 SKU、详情图、券后价全流程解析
前端·爬虫·python
风送雨4 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
XTTX1104 小时前
Vue3+Cesium教程(36)--动态设置降雨效果
前端·javascript·vue.js
LYFlied5 小时前
WebGPU与浏览器边缘智能:开启去中心化AI新纪元
前端·人工智能·大模型·去中心化·区块链
Setsuna_F_Seiei5 小时前
2025 年度总结:人生重要阶段的一年
前端·程序员·年终总结
model20055 小时前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端
han_6 小时前
从一道前端面试题,谈 JS 对象存储特点和运算符执行顺序
前端·javascript·面试
aPurpleBerry6 小时前
React 01 目录结构、tsx 语法
前端·react.js
jayaccc6 小时前
微前端架构实战全解析
前端·架构