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的左右滚动实现代码
Dec 03 Javascript
jquery显示和隐藏div特效实例
Feb 27 Javascript
自编jQuery插件实现模拟alert和confirm
Sep 01 Javascript
jquery实现类似淘宝星星评分功能有截图
Sep 15 Javascript
推荐4个原生javascript常用的函数
Jan 12 Javascript
充分发挥Node.js程序性能的一些方法介绍
Jun 23 Javascript
总结JavaScript设计模式编程中的享元模式使用
May 21 Javascript
用jquery获取自定义的标签属性的值简单实例
Sep 17 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
Sep 18 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
Jan 30 Javascript
vue实现行列转换的一种方法
Aug 06 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
Oct 29 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
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
2014/12/24 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
php模板引擎技术简单实现
2016/03/15 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
js实现分页功能
2017/05/24 Javascript
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
Python中优化NumPy包使用性能的教程
2015/04/23 Python
python实现ID3决策树算法
2018/08/29 Python
基于pandas中expand的作用详解
2019/12/17 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
海飞丝的广告词
2014/03/20 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
小学生节水倡议书
2015/04/29 职场文书
餐馆开业致辞
2015/08/01 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
MySQL创建管理HASH分区
2022/04/13 MySQL