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. windows同时安装了两种jdk

    因为某种需要,同时安装jdk1.8 和jdk1.7 因为电脑曾经安装了jdk1.8,并且已经设置好环境变量.后来新添加的jdk1.7 出现问题: 先是安装的1.8,之后有安装了1.7,在环境变量中也配 ...

  2. MVC校验方式【六】

    一.以往的校验都是自己写正则表达式校验,本篇讲的是通过MVC自带的jquery文件进行校验 实现步骤:1. 在webform页面中引入两个jquery文件,10,11行的代码. <%@ Page ...

  3. Fatal error: ENOSPC: System limit for number of file watchers reached

    参考https://www.jianshu.com/p/4d2edd55b471 echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/ ...

  4. composer修改成国内镜像

    因为composer安装包数据是从github.com上下载的,安装包的元数据从packagist.org上下载 作为两个国外的网站,连接速度会很慢,而且很有可能网站被墙. 所以composer中国全 ...

  5. 『Python』源码解析_源码文件介绍

    本篇代码针对2.X版本,与3.X版本细节不尽相同,由于两者架构差别不大加之本人能力有限,所以就使用2.X体验python的底层原理了. 一.主要文件夹内容 Include :该目录下包含了Python ...

  6. c# 后台处理获取的JSON 数据

    原创: http://www.imooc.com/article/8913 自己的例子: web.config <appSettings> <add key="GmailU ...

  7. Typescript中的装饰器原理

    Typescript中的装饰器原理 1.小原理 因为react中的高阶组件本质上是个高阶函数的调用, 所以高阶组件的使用,我们既可以使用函数式方法调用,也可以使用装饰器. 也就是说,装饰器的本质就是一 ...

  8. linux服务管理 服务管理

    系统的运行级别 运行级别 0 关机(不能设置) 1 单用户模式,类似windows的安全模式 2 不完全的命令行模式,不含NFS服务(文件共享的服务) 3 完全的命令行模式,就是标准字符界面 4 系统 ...

  9. java截取字符串,第4位以后的字符串用*代替

    public class F { public static void main(String[] args) { /**截取字符串,第4位以后的字符串用*代替*/ String s = " ...

  10. CSS Basic Memo

    1.bootstrap 清除浮动原理 .clearfix:before, .clearfix:after { content: ' ', display: table } .clearfix:afte ...