中国城乡建设部人力网站首页,wordpress 主题移植emlog,亿赐客网站怎么样,室内设计联盟 官网前言
这个问题的灵感来自线上一个小bug#xff0c;前两天刚看完同事写的代码#xff0c;对数字类型处理的很好#xff0c;之前一直都是用正则和toFixed(2)处理数字相关#xff0c;后面发现使用numeral.js处理更完美。
对于下面这种数据的处理#xff0c;你能想到几种方法…前言
这个问题的灵感来自线上一个小bug前两天刚看完同事写的代码对数字类型处理的很好之前一直都是用正则和toFixed(2)处理数字相关后面发现使用numeral.js处理更完美。
对于下面这种数据的处理你能想到几种方法简单思考下
0.10.20.30000000000000004
0.14*10014.0000000000000029999999---9,999,999
1234567890---1,234,567,8901.先说加减乘除法 0.10.2的精准算法这里以加法举例了换成减、乘、除法都是一样的 1).使用toFixed()方法
const sum 0.1 0.2; // 0.14 * 100; 乘法
const roundedSum parseFloat(sum.toFixed(10));
console.log(roundedSum); // 输出 0.32).使用parseFloat()和toFixed()结合
const sum parseFloat((0.1 0.2).toFixed(10));
console.log(sum); // 输出 0.33).使用Math.round()
const sum Math.round((0.1 0.2) * 1e10) / 1e10;
console.log(sum); // 输出 0.34).使用numeral.EPSILON
const sum 0.1 0.2;
const roundedSum Math.abs(sum - 0.3) Number.EPSILON ? 0.3 : sum;
console.log(roundedSum); // 输出 0.35).使用Numeral.js
// 安装
npm i numeral -S
// 挂原型链上
import numeral from numeral
Vue.prototype.$numeral numeral; // 数字金额let num this.$numeral(14*100).format(0,0.00)
console.log(num); // 输出 14.002.再说超大金额(千位符)格式化处理
1).利用字符串提供的toLocaleString()js内置的方法处理,这个方法最简单
var num 9999999;
console.log(num.toLocaleString()) // 9,999,9992).利用正则处理
function addThousandSeparator(number) {// 将数字转换为字符串const numberString String(number);// 使用正则表达式添加千位符const formattedNumber numberString.replace(/\B(?(\d{3})(?!\d))/g, ,);return formattedNumber;
}const result addThousandSeparator(9999999);
console.log(result); // 输出 9,999,999\B(?(\d{3})(?!\d)) 是一个正则表达式模式它使用正向零宽断言来匹配不在数字之前的位置但是在每三个数字之间。这样就可以在这些位置插入千位符 3).使用第三方库的Numeral.js处理
对整数的处理 script srchttps://cdn.bootcss.com/numeral.js/2.0.6/numeral.min.js/script
var formattedNumber numeral(9999999).format(0,0); // 输出9,999,999
console.log(formattedNumber,formattedNumber);对小数点的处理 这里注意括号里逗号与小数点的区别format(0,0.00) script srchttps://cdn.bootcss.com/numeral.js/2.0.6/numeral.min.js/script
var formattedNumber numeral(9999999.56841).format(0,0.00); // 输出9,999,999
console.log(formattedNumber,formattedNumber);script srchttps://cdn.bootcss.com/numeral.js/2.0.6/numeral.min.js/scriptscriptvar string numeral(1634600).format(0,0);console.log(string)// 乘法运算var result numeral(0.14).multiply(100).value(); // 输出6console.log(result,result);var result1 numeral(0.14*100).value(); console.log(result1,result1,numeral(0.14*100).format(0,0.00));// this.$numeral(0.14*100).format(0,0.00)/script!DOCTYPE html
html langen
headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titlenumeral.js/title
/head
bodynumeral.js!-- script srchttps://cdn.bootcdn.net/ajax/libs/numeral.js/2.0.6/locales.min.js/script --script srchttps://cdn.bootcss.com/numeral.js/2.0.6/numeral.min.js/scriptscriptvar string numeral(1634600).format(0,0);console.log(string)// 乘法运算var result numeral(0.14).multiply(100).value(); // 输出6console.log(result,result);var result1 numeral(0.14*100).value(); console.log(result1,result1,numeral(0.14*100).format(0,0.00));// this.$numeral(0.14*100).format(0,0.00)/script
/body
/html