javascript将浮点数转换成整数的三个方法


Posted in Javascript onJune 23, 2014

Summary

暂时我就想到3个方法而已。如果读者想到其他好用方法,也可以交流一下

parseInt
位运算符
Math.floor Math.ceil

Description

一、parseInt

1. 实例

parseInt("13nash");//13
parseInt("")// NaN
parseInt("0xA") //10(十六进制)
parseInt(" 13")//13
parseInt("070")//ES3为56(八进制) ES5为70
parseInt(070)//ES3和ES5都为56
parseInt(22.5)//22

2. 转换规则:

(1). 根据实例(1)得出parseInt会解析一直到非数字时停止
(2). 根据实例(2)得出parseInt解析空字符串时为NaN,而不是0
(3). 根据实例(3)得出parseInt可以将16进制数转换成10进制
(4). 根据实例(4)得出parseInt忽略字符串的空格

3. 缺点:

(1). 根据实例(5)我们可以知道parseInt在转换八进制数组时是不兼容的。ES3会把070看成八进制数值,但是ES5会将070看成十进制。
(2). 根据实例(6)(7)我们可以知道parseInt在执行的时候会先把参数转变成字符串后再执行变成整数

4. 解释:为什么(5)(6)执行都是执行将070转换成整数,但是结果不一样呢?这个也是解决怎么得到缺点中的第二点。

因为在看官方文档中我看到了If string is not a string, then it is converted to one。这段话。就是说参数如果不是字符串的话,它会先将它转换成字符串再转换成整数。比如实例(6)中parseInt(070),其实是先将070转换成字符串,你可以试下070+""或者String(070)都可以知道070会被转换成"56",因为070是一个八进制。然后就变成了parseInt("56"),最后得出来的整数就是56了。不管你在ES3或者ES5都是为56

二、位操作符

1. 实例

console.log(0 | "123.45")//123
console.log(0 | 123.45)//123
console.log(0 ^ 123.45)//123
console.log(~~123.45)//123

2. 原理:javascript没有整数的概念,所有的数值型都是双精度浮点数。在用位运算符时,它会先把操作数转变成整数,方便操作。而0与其他值异或或者按位或都不会改变操作值的

三、Math.floor与Math.ceil

1. 实例

console.log(Math.floor(2.3)//2
console.log(Math.floor(-2.3)//-3
console.log(Math.ceil(2.3)//3
console.log(Math.ceil(-2.3)//-2

2. 两者不足:Math.floor得到的是数字的最小整数;而Math.ceil得到的是最大整数。所以导致本来-2.3我们取整的话我们要得到的是-2,但是用Math.floor得到的是-3。而2.3用Math.ceil得到的是3,但是我们要的是2就行了。

3. 解决:

//自行定义一个函数
function getInt(val){
return val>0 ? Math.floor(val):Math.ceil(val);
}
Javascript 相关文章推荐
JQuery UI DatePicker中z-index默认为1的解决办法
Sep 28 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
Jun 09 Javascript
javascript进行四舍五入方法汇总
Dec 16 Javascript
浅谈Javascript中substr和substring的区别
Sep 30 Javascript
JavaScript数据结构与算法之链表
Jan 29 Javascript
bootstrap下拉列表与输入框组结合的样式调整
Oct 08 Javascript
js实现点击图片自动提交action的简单方法
Oct 16 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
Nov 09 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
Jul 28 Javascript
使用canvas进行图像编辑的实例
Aug 29 Javascript
pm2 部署 node的三种方法示例
Oct 20 Javascript
vue element项目引入icon图标的方法
Jun 06 Javascript
jquery用data方法获取某个元素上的事件
Jun 23 #Javascript
如何正确使用javascript 来进行我们的程序开发
Jun 23 #Javascript
js实现键盘操作实现div的移动或改变的原理及代码
Jun 23 #Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
Jun 23 #Javascript
jquery中map函数与each函数的区别实例介绍
Jun 23 #Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
Jun 23 #Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
Jun 23 #Javascript
You might like
删除无限级目录与文件代码共享
2006/07/12 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
python实现低通滤波器代码
2020/02/26 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
大四毕业生学习总结的自我评价
2013/10/31 职场文书
中专毕业生自荐信
2013/11/16 职场文书
工程业务员岗位职责
2013/12/31 职场文书
上班打牌检讨书
2014/02/07 职场文书
活动总结格式
2014/08/30 职场文书
校运动会广播稿300字
2014/10/07 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书