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 相关文章推荐
js计算页面刷新的次数
Jul 20 Javascript
jquery 的 $("#id").html() 无内容的解决方法
Jun 07 Javascript
JavaScript保存并运算页面中数字类型变量的写法
Jul 06 Javascript
pace.js页面加载进度条插件
Sep 29 Javascript
JSONObject使用方法详解
Dec 17 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
Mar 07 Javascript
Angular4学习笔记之新建项目的方法
Jul 18 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
Aug 20 Javascript
DatePickerDialog 自定义样式及使用全解
Jul 09 Javascript
详解JavaScript作用域、作用域链和闭包的用法
Sep 03 Javascript
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
使用Ajax实现无刷新上传文件
Apr 12 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解析html的实现代码
2011/08/08 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
在JavaScript中使用严格模式(Strict Mode)
2019/06/13 Javascript
Layui实现主窗口和Iframe层参数传递
2019/11/14 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
python读取csv文件示例(python操作csv)
2014/03/11 Python
python中使用序列的方法
2015/08/03 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
CSS3 box-sizing属性
2009/04/17 HTML / CSS
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
初中地理教学反思
2014/01/11 职场文书
农村党员干部承诺书
2015/05/04 职场文书
毕业设计致谢语
2015/05/14 职场文书
技能培训通讯稿
2015/07/18 职场文书
二十年同学聚会感言
2015/07/30 职场文书
MySQL读取JSON转换的方式
2022/03/18 MySQL
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers