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 相关文章推荐
Javascript里使用Dom操作Xml
Jan 22 Javascript
浅析Javascript使用include/require
Nov 13 Javascript
javascript函数定义的几种区别小结
Jan 06 Javascript
jquery ui resize 中border-box的bug修正
Apr 26 Javascript
jQuery焦点图切换特效代码分享
Sep 15 Javascript
JavaScript设计模式开发中组合模式的使用教程
May 18 Javascript
Mongoose经常返回e11000 error的原因分析
Mar 29 Javascript
vue中遇到的坑之变化检测问题(数组相关)
Oct 13 Javascript
vue加载完成后的回调函数方法
Sep 07 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
Aug 26 Javascript
js实现拖动缓动效果
Jan 13 Javascript
JavaScript实现HSL拾色器
May 21 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的FTP学习(二)[转自奥索]
2006/10/09 PHP
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
jquery radio 操作代码
2011/03/16 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
2017/03/30 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
vue router 跳转后回到顶部的实例
2018/08/31 Javascript
加快Vue项目的开发速度的方法
2018/12/12 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
原生js实现下拉选项卡
2019/11/27 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
使用Python读取二进制文件的实例讲解
2018/07/09 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
后勤人员自我鉴定
2013/10/20 职场文书
电子商务网站的创业计划书
2014/01/05 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
施工安全承诺书
2014/05/22 职场文书
诚实守信演讲稿
2014/09/01 职场文书
欠款起诉书范文
2015/05/19 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android
Nginx缓存设置案例详解
2021/09/15 Servers