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 delete 属性的使用
Oct 08 Javascript
JQuery小知识
Oct 15 Javascript
js下判断 iframe 是否加载完成的完美方法
Oct 26 Javascript
Extjs单独定义各组件的实例代码
Jun 25 Javascript
js格式化金额可选是否带千分位以及保留精度
Jan 28 Javascript
基于d3.js实现实时刷新的折线图
Aug 03 Javascript
vue实现移动端图片裁剪上传功能
Aug 18 Javascript
jquery之基本选择器practice(实例讲解)
Sep 30 jQuery
jQuery pagination分页示例详解
Oct 23 jQuery
node.js爬取中关村的在线电瓶车信息
Nov 13 Javascript
javascript的setTimeout()使用方法总结
Nov 20 Javascript
vue3使用vuedraggable实现拖拽功能
Apr 06 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
星际争霸任务指南——神族
2020/03/04 星际争霸
最新的php 文件上传模型,支持多文件上传
2009/08/13 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
Vue项目安装插件并保存
2019/01/28 Javascript
微信小程序开发的基本流程步骤
2019/01/31 Javascript
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
[02:27]刀塔重生降临
2015/10/14 DOTA
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
深入了解Django中间件及其方法
2019/07/26 Python
python常用数据重复项处理方法
2019/11/22 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
如何利用python进行时间序列分析
2020/08/04 Python
详解Scrapy Redis入门实战
2020/11/18 Python
关于Python错误重试方法总结
2021/01/03 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
美国最大点评网站:Yelp
2018/02/14 全球购物
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
企业面试题试卷附带答案
2015/12/20 面试题
2015年学校德育工作总结
2015/04/22 职场文书
2015年老干部工作总结
2015/04/23 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书