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 相关文章推荐
node.js中的fs.closeSync方法使用说明
Dec 17 Javascript
JavaScript实现简单的数字倒计时
May 15 Javascript
javascript删除元素节点removeChild()用法实例
May 26 Javascript
javascript 正则表达式分组、断言详解
Apr 20 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
Jul 12 Javascript
js删除数组中的元素delete和splice的区别详解
Feb 03 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
Nov 02 Javascript
vue-cli安装使用流程步骤详解
Nov 08 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
Nov 15 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
vue中activated的用法
Jan 03 Vue.js
vue backtop组件的实现完整代码
Apr 07 Vue.js
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
php正则校验用户名介绍
2008/07/19 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
轻松实现php文件上传功能
2017/02/17 PHP
tagName的使用,留一笔
2006/06/26 Javascript
javascript 全角转换实现代码
2009/07/17 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
基于bootstrap3和jquery的分页插件
2015/07/31 Javascript
JavaScript中eval函数的问题
2016/01/31 Javascript
如何在vue中使用ts的示例代码
2018/02/28 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
python实现的config文件读写功能示例
2019/09/24 Python
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
大学专科自荐信
2014/06/17 职场文书
新党章的学习心得体会
2014/11/07 职场文书
应届毕业生自荐信
2015/03/04 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
公司门卫岗位职责
2015/04/13 职场文书
三八妇女节主持词
2015/07/04 职场文书
情况说明书格式及范文
2019/06/24 职场文书
vue elementUI表格控制对应列
2022/04/13 Vue.js
Python中的 enumerate和zip详情
2022/05/30 Python
JS函数式编程实现XDM一
2022/06/16 Javascript