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 相关文章推荐
网站页面自动跳转实现方法PHP、JSP(上)
Aug 01 Javascript
禁止空格提交表单的js代码
Nov 17 Javascript
jquery层级选择器的实现(匹配后代元素div)
Sep 05 Javascript
更靠谱的H5横竖屏检测方法(js代码)
Sep 13 Javascript
基于jQuery实现Accordion手风琴自定义插件
Oct 13 Javascript
详解tween.js 中文使用指南
Jan 05 Javascript
微信小程序实现多选功能
Nov 04 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
Feb 21 Javascript
微信小程序人脸识别功能代码实例
May 07 Javascript
使用layui定义一个模块并使用的例子
Sep 14 Javascript
JavaScript函数IIFE使用详解
Oct 21 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
Dec 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
一个ORACLE分页程序,挺实用的.
2006/10/09 PHP
PHP新手上路(十)
2006/10/09 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
python绘制多个子图的实例
2019/07/07 Python
python实现最大优先队列
2019/08/29 Python
numpy实现神经网络反向传播算法的步骤
2019/12/24 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
Python的pygame安装教程详解
2020/02/10 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
Java如何格式化日期
2012/08/07 面试题
医学院校毕业生自荐信范文
2014/01/01 职场文书
给学校的建议书
2014/03/12 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
Mysql Show Profile
2021/04/05 MySQL
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS
python通过新建环境安装tfx的问题
2022/05/20 Python