Summary

临时我就想到3个方法而已。假设读者想到其它好用方法,也能够交流一下

  1. parseInt
  2. 位运算符
  3. Math.floor Math.ceil

Description

一、parseInt
1. 实例
 (1).parseInt("13nash");//13

    (2).parseInt("")// NaN

    (3).parseInt("0xA") //10(十六进制)

    (4).parseInt("   13")//13

    (5).parseInt("070")//ES3为56(八进制) ES5为70

    (6).parseInt(070)//ES3和ES5都为56

    (7).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); }

Reference

What is the best method to
convert floating point to an integer in JavaScript

parseInt MDN
Why doesn't an octal literal as a string cast to a number?

javascript将浮点数转换成整数的更多相关文章

  1. javascript将浮点数转换成整数的三个方法

    浮点数转换成整数方法有很多,本例为大家介绍常用的三个方法,如果读者想到其他好用方法,也可以交流一下   Summary 暂时我就想到3个方法而已.如果读者想到其他好用方法,也可以交流一下 parseI ...

  2. javascript浮点数转换成整数三种方法

    将浮点数转换成整数方法有很多,分享三种常用方法. Summary 暂时我就想到3个方法而已.如果读者想到其他好用方法,也可以交流一下 parseInt位运算符Math.floor Math.ceil ...

  3. python3 使用int函数将浮点数转换成整数

    int函数将浮点数转换成整数需要注意的地方 >>> int(153)153>>> int(153.4)153>>> int(153.5)153&g ...

  4. Swift - 浮点数转换成整数(四舍五入与直接截断)

    1,直接截去小数部分转换成整数 使用强制转换会将浮点部分去除,把整数部分转换为整数. 1 var i = Int(23.50) //23 2,四舍五入转换成整数 lroundf是一个全局函数,作用是将 ...

  5. 将一个浮点数转换成人民币读法字符串(java)

    public class Num2Rmb   {       private String[] hanArr = {"零" , "壹" , "贰&qu ...

  6. 17.把字符串转换成整数[atoi]

    [题目] 把字符串转换成整数,需要考虑字符串有效性. [代码]  C++ Code  123456789101112131415161718192021222324252627282930313233 ...

  7. Java将ip字符串转换成整数的代码

    下面代码是关于Java将ip字符串转换成整数的代码,希望对各位有较大用途. public class IpUtil { public static int Ip2Int(String strIp){ ...

  8. 【Java】 剑指offer(67) 把字符串转换成整数

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能 ...

  9. 《剑指offer》第六十七题(把字符串转换成整数)

    // 面试题67:把字符串转换成整数 // 题目:请你写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不 // 能使用atoi或者其他类似的库函数. #include <ios ...

随机推荐

  1. linux下postgres未能正常启动的解决过程

    转载:http://www.cnblogs.com/starRebel/p/7892214.html 起因是一次linux服务器重启后,postgres没有起来,手动找原因. 1. 直接在命令行打po ...

  2. 由装饰者模式来深入理解Java I/O整体框架

    前言 Java里面的I/O这一部分看过很多遍,每次看完之后特别混乱,又是输入流,又是输出流,又是字符流,又是字节流,还有什么过滤流,缓冲流.每次看得我如入云里雾里,直到后面看了设计模式这一块,才算真正 ...

  3. Annotaion——深入理解注解类型

    什么是注解? 对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metada ...

  4. flask项目部署

    1.安装 安装ssh 新版本安装位 apt/apt-get 老版本为 apt-get 安装以后 ifconfig查看当前的ip地址 如果网络不在同一个ip段 将网络模式设置为桥接 安装pip3 sud ...

  5. android中include

    android中include. include标签用法. 1.新建一个xml文件,命名 head.xml head.xml文件内容如下: <?xml version="1.0&quo ...

  6. javascript高级程序设计第3版——第一章概括

    最近发现Xmind思维导图是个好东西,刚好开始看书,被用来归纳最好不过了

  7. 纯CSS实现Div高度根据自适应宽度(百分百调整)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. selenium 常用操作

    官方文档: https://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver. ...

  9. ui学习心得

    软工课上我分配的任务是界面设计,但是对于初期一个ps从没接触的人来说我觉得还是有点困难,所以要从头学起.  PS的功能是什么呢?对于业余爱好者来说,主要还是做一些简单的处理照片.绘图.设计一些皮肤等, ...

  10. Kruskal算法(题目还是:畅通工程)

    那还是先把题目丢出来,是HDU上的一道题 畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...