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 相关文章推荐
去除链接虚线全面分析总结
Aug 15 Javascript
用js重建星际争霸
Dec 22 Javascript
jquery tab标签页的制作
May 10 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
Feb 05 Javascript
javascript实现促销倒计时+fixed固定在底部
Sep 18 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
May 20 Javascript
JavaScript中join()方法的使用简介
Jun 09 Javascript
jQuery Validate初步体验(一)
Dec 12 Javascript
jQuery ajax MD5实现用户注册即时验证功能
Oct 11 Javascript
axios取消请求的实践记录分享
Sep 26 Javascript
JS document form表单元素操作完整示例
Jan 13 Javascript
代码解析React中setState同步和异步问题
Jun 03 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 会话(session 时间设定)使用入门代码
2008/06/05 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
php中heredoc与nowdoc介绍
2014/12/25 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
JS修改css样式style浅谈
2013/05/06 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
深入分析jQuery.one() 函数
2020/06/03 jQuery
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
python实现百度关键词排名查询
2014/03/30 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
python Matplotlib模块的使用
2020/09/16 Python
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
客服工作职责
2013/12/11 职场文书
高中数学教学反思
2014/01/30 职场文书
财务简历的自我评价
2014/03/05 职场文书
岗位聘任书范文
2014/03/29 职场文书
感谢信的格式
2015/01/21 职场文书
2015新学期家长寄语
2015/02/26 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
Python实现视频中添加音频工具详解
2021/12/06 Python
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis