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


Posted in Javascript onSeptember 09, 2019

一、使用取余运算符判断

任何整数都会被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,真是难以接受。对这些类型的内部转换细节感兴趣的请参考:

因此,需要先 判断下对象是否是数字 ,比如加一个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中判断为整数的多种方式及保留两位小数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JavaScript下申明对象的几种方法小结
Oct 02 Javascript
禁止js文件缓存的代码
Apr 09 Javascript
JQuery通过Ajax提交表单并返回结果
Jul 31 Javascript
超链接的禁用属性Disabled使用示例
Jul 31 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
Oct 29 Javascript
js继承实现方法详解
Dec 16 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
JS倒计时实例_天时分秒
Aug 22 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
Nov 15 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
Dec 06 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
Aug 27 Javascript
Vue中 axios delete请求参数操作
Aug 25 Javascript
javascript删除数组元素的七个方法示例
Sep 09 #Javascript
微信小程序 select 下拉框组件功能
Sep 09 #Javascript
移动端手指操控左右滑动的菜单
Sep 08 #Javascript
swiper Scrollbar滚动条组件详解
Sep 08 #Javascript
js实现移动端tab切换时下划线滑动效果
Sep 08 #Javascript
swiper4实现移动端导航切换
Oct 16 #Javascript
Swiper.js实现移动端元素左右滑动
Sep 08 #Javascript
You might like
PHP初学者头疼问题总结
2006/07/08 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
Node.js使用MySQL连接池的方法实例
2018/02/11 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
python实现flappy bird小游戏
2018/12/24 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
大学生思想汇报范文
2013/12/31 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
销售冠军获奖感言
2014/02/03 职场文书
机关单位人员学雷锋心得体会
2014/03/10 职场文书
护理医院见习报告
2014/11/03 职场文书
交心谈心活动总结
2015/05/11 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
公司会议开幕词
2016/03/03 职场文书
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS