gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
阅读:3351回复:1

js 四舍五入 取小数点后两位

楼主#
更多 发布于:2021-09-06 13:50
方法 Math.round
round() 方法可把一个数字舍入为最接近的整数。
对于 0.5,该方法将进行上舍入。
例如,3.5 将舍入为 4,而 -3.5 将舍入为 -3。
Math.round(748.58)   结果:749
Math.round(748.5867*100) 结果:74859
Math.round(748.5867*100)/100  结果:748.59  保留两位
Math.round(748.5867*1000)/1000  结果:748.587  保留三位

通用js方法:
function format45(val,v2) {
    if (isNaN(val) || val == undefined || val == null) { return null; }
    return Math.round(val * v2) / v2;
}
format45(748.586767,10000)  结果:748.5868
相关文档:http://www.w3school.com.cn/jsref/jsref_round.asp
 若用vue开发,建议放到公共方法类,固定函数名称和精确度,方便统一维护


let util = {

};
util.formatZeroDecimalPlaces = function (val) {
  if (val == undefined || val == null || typeof (val) !== 'number') { return null; }
  let v2 = 1;
  return Math.round(val * v2) / v2;
};

util.formatThreeDecimalPlaces = function (val) {  if (val == undefined || val == null || typeof (val) !== 'number') { return null; }  let v2 = 1000;  return Math.round(val * v2) / v2;};

export default util;
四舍五入也可以通过 toFixed(2) ,但注意它的返回值是string类型,计算的时候需要转换数据类型。详情见:https://www.cnblogs.com/hao-1234-1234/p/14363641.html
gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
沙发#
发布于:2021-09-06 13:52
js判断是否为整数类型(5种方式)


方式一、使用取余运算符判断
任何整数都会被1整除,即余数是0。利用这个规则来判断是否是整数。
function isInteger(obj) { return obj%1 === 0 }

isInteger(
3) // true

isInteger(3.3) // false
isInteger('') // true
isInteger('3') // true
isInteger(true) // true
isInteger([]) // true

对于空字符串、字符串类型数字、布尔true、空数组都返回了true。对这些类型的内部转换细节感兴趣的请参考:JavaScript中奇葩的假值
因此,需要先判断下对象是否是数字,比如加一个typeof



function isInteger(obj) {
return typeof obj === 'number' && obj%1 === 0
}

isInteger(
'') // false

isInteger('3') // false
isInteger(true) // false
isInteger([]) // false

方式二、使用Math.round、Math.ceil、Math.floor判断

整数取整后还是等于自己。利用这个特性来判断是否是整数,Math.floor示例,如下


function isInteger(obj) {
  return Math.floor(obj) === obj
}


isInteger(
3) // true

isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false

方式三、通过parseInt判断


function isInteger(obj) {
  return parseInt(obj, 10) === obj
}

isInteger(
3) // true

isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false、
//很不错,但也有一个缺点 isInteger(1000000000000000000000) // false

原因是parseInt在解析整数之前强迫将第一个参数解析成字符串。这种方法将数字转换成整型不是一个好的选择。

方式四、通过位运算判断


function isInteger(obj) {
   return (obj | 0) === obj
}

isInteger(
3) // true

isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false isInteger(true) // false isInteger([]) // false
//这个函数很不错,效率还很高。但有个缺陷,上文提到过,位运算只能处理32位以内的数字,对于超过32位的无能为力 isInteger(Math.pow(2, 32)) // 32位以上的数字返回false了

方式五、ES6提供了Number.isInteger


Number.isInteger(3) // true
Number.isInteger(3.1) // false
Number.isInteger('') // false
Number.isInteger('3') // false
Number.isInteger(true) // false
Number.isInteger([]) // false

目前,最新的Firefox和Chrome已经支持。

转自:http://www.jb51.net/article/75813.htm
游客


返回顶部