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

JavaScript中判断为整数的多种方式及保留两位小数的方法

程序员文章站 2023-11-03 14:13:03
一、使用取余运算符判断 任何整数都会被1整除,即余数是0。利用这个规则来判断是否是整数。 function isinteger(obj) { return...

一、使用取余运算符判断

任何整数都会被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

这个直接把字符串,true,[]屏蔽了,代码量比上一个函数还少。

三、通过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

竟然返回了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已经支持。

六、js 输入int类型数字后自动在后面加.00

var getfloatstr = function (num) {
 num += '';
 num = num.replace(/[^0-9|\.]/g, ''); //清除字符串中的非数字非.字符
 if (/^0+/) //清除字符串开头的0
  num = num.replace(/^0+/, '');
 if (!/\./.test(num)) //为整数字符串在末尾添加.00
  num += '.00';
 if (/^\./.test(num)) //字符以.开头时,在开头添加0
  num = '0' + num;
 num += '00'; //在字符串末尾补零
 num = num.match(/\d+\.\d{2}/)[0];
 return num;
 };

如若vue 全局使用 在 main.js

vue.prototype.getfloatstr = function(num) {
 num += '';
 num = num.replace(/[^0-9|\.]/g, ''); //清除字符串中的非数字非.字符

 if (/^0+/) //清除字符串开头的0
 num = num.replace(/^0+/, '');
 if (!/\./.test(num)) //为整数字符串在末尾添加.00
 num += '.00';
 if (/^\./.test(num)) //字符以.开头时,在开头添加0
 num = '0' + num;
 num += '00'; //在字符串末尾补零
 num = num.match(/\d+\.\d{2}/)[0];
 return num;
}

方法有很多种 例如:

js将小数转为保留两位小数(保留0.00和不保留)

function todecimal2(x) {
 var f = math.round(x * 100) / 100;
 var s = f.tostring();
 var rs = s.indexof('.');
 if (rs < 0) {
 rs = s.length;
 s += '.';
 }
 while (s.length <= rs + 2) {
 s += '0';
 }
 return s;
}
//保留2位小数,如:2,还会保留2 不会补0
function todecimal2nozero(x) {
 var f = math.round(x * 100) / 100;
 var s = f.tostring();
 return s;
}

总结

以上所述是小编给大家介绍的javascript中判断为整数的多种方式及保留两位小数,希望对大家有所帮助