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 相关文章推荐
extJs 常用到的增,删,改,查操作代码
Dec 28 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
Apr 18 Javascript
JavaScript基本语法讲解
Jun 03 Javascript
js实现创建删除html元素小结
Sep 30 Javascript
微信小程序 wxapp地图 map详解
Oct 31 Javascript
Bootstrap CSS布局之列表
Dec 15 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
Apr 21 jQuery
利用node.js实现反向代理的方法详解
Jul 24 Javascript
React Native 通告消息竖向轮播组件的封装
Aug 25 Javascript
详解html-webpack-plugin用法全解
Jan 22 Javascript
React 组件转 Vue 组件的命令写法
Feb 28 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
May 01 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数组应用之比较两个时间的相减排序
2008/08/18 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
windows下开发并编译PHP扩展的方法
2011/03/18 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
在Python中使用正则表达式的方法
2015/08/13 Python
Python使用爬虫猜密码
2016/02/19 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
小学英语教学反思案例
2014/02/04 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
社区母亲节活动方案
2014/03/05 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
婚宴新郎致辞
2015/07/28 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
团干部培训班心得体会
2016/01/06 职场文书