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 相关文章推荐
经常用到的JavasScript事件的翻译
Apr 09 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
Nov 14 Javascript
js+html5实现canvas绘制网页时钟的方法
May 21 Javascript
判断js的Array和Object的实现方法
Aug 29 Javascript
easyui messager alert 三秒后自动关闭提示的实例
Nov 07 Javascript
简单实现js悬浮导航效果
Feb 05 Javascript
基于vue1和vue2获取dom元素的方法
Mar 17 Javascript
layui从数据库中获取复选框的值并默认选中方法
Aug 15 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
May 18 Javascript
JavaScript this在函数中的指向及实例详解
Oct 14 Javascript
微信小程序云函数添加数据到数据库的方法
Mar 04 Javascript
Angular短信模板校验代码
Sep 23 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
PHP实现文件安全下载
2006/10/09 PHP
简化php模板页面中分页代码的解析
2009/02/06 PHP
关于尾递归的使用详解
2013/05/02 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
checkbox勾选判断代码分析
2014/06/11 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
什么是索引指示器
2012/08/20 面试题
社会稳定风险评估方案
2014/06/02 职场文书
家长评语怎么写
2014/12/30 职场文书
2015年新学期寄语
2015/02/26 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
学历证明样本
2015/06/16 职场文书
教研活动主持词
2015/07/03 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS