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的数组和常用函数详解
May 09 Javascript
一篇文章掌握RequireJS常用知识
Jan 26 Javascript
jQuery的层级查找方式分析
Jun 16 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
Jul 20 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
Nov 22 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
Jan 11 Javascript
浅谈实现vue2.0响应式的基本思路
Feb 13 Javascript
浅谈Webpack 持久化缓存实践
Mar 22 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
Oct 12 Javascript
Django模板继承 extend标签实例代码详解
May 16 Javascript
vue使用screenfull插件实现全屏功能
Sep 17 Javascript
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 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
ASP和PHP都是可以删除自身的
2007/04/09 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
php源码的安装方法和实例
2019/09/26 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
javascript省市级联功能实现方法实例详解
2015/10/20 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
vue设置动态请求地址的例子
2019/11/01 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
下载糗事百科的内容_python版
2008/12/07 Python
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
python里 super类的工作原理详解
2019/06/19 Python
Python中请不要再用re.compile了
2019/06/30 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
详解python tkinter模块安装过程
2020/01/06 Python
python实现的Iou与Giou代码
2020/01/18 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
《陶罐和铁罐》教学反思
2014/02/19 职场文书
群众路线领导对照材料
2014/08/23 职场文书
win10更新失败无限重启解决方法
2022/04/19 数码科技