• Number
  • 整数
  • 小数(浮点数)
  • 小数参与运算
  • NaN
  • 其他数据类型转换成数字
  • String
  • 其他数据类型转换成字符串
  • Number、Boolean、String的相同点

 

 

Number


虽然数字是没有范围的,但计算机能够储存的数字是有范围的,这个范围是-2^53 ~ 2^53(了解就好),如果超过了这个范围,计算机会返回无穷。

整数


三种表示方法:十进制、八进制(0~)、十六进制(0x~)

建议:

1, 尽量使用十进制,尽量少用十六进制(除了特殊运算),尽量不用八进制(ES5严格模式下会报错);

2, 在开发中别使用太大或太小的整数,尽量不要超过十六位。超过十六位的数字在 JS 中会采用科学计数法的方式表示。

3, 总结起来其实就是正常使用整数就行,正常开发中一般不用担心。

小数(浮点数)


1, 小数点前面的0可以省略: 0.5可以写成 .5(在 CSS 中也可以这样写),但是不建议。

2, 小数点后面没有数字或者全是0的话,这个小数会被转换成整数。这样做是为了节省空间,因为保存小数需要的空间是保存整数的两倍。

3, 如果小数点后面的0超过6位的话,这个数会被转换成科学计数法表示。

小数参与运算


alert(0.1 + 0.2 === 0.3)  // false

Number类型使用 IEEE754 格式来表示整数和浮点数。

不是所有小数都可以用二进制表示出来的,如果计算机无法精确地表示一个小数,它只能用一个无限近似的数来代替。在上面的计算中, 0.1和0.2在被转换成二进制时由于计算机无法把它们精确地表示出来,只能使用近似值代替,所以产生了误差。因此建议永远不要直接比较小数,这样做很有可能得不到准确的结果。如果必须要比较小数的话,可以先把小数转换成整数,运算后再转换回小数。

alert((0.1 * 10 + 0.2 * 10)/10 === 0.3);  // true

对精度要求不是特别高的时候可以使用toFixed(),把后面的小数忽略掉。

alert((0.1 + 0.2).toFixed() === 0.3.toFixed());  // true

注意toFixed()返回的是字符串。

涉及小数的运算中,还要特别注意书写顺序,随意更改这个顺序也有可能造成误差。

例如在购物商城买了三件单价为17.45的商品,打九折,如果在下单页面是这样子计算的的:17.45*3*0.9 = 47.114999999999995,而在结账页面是这样子的:0.9*17.45*3 = 47.115,(注意数字的顺序不一样),这时候如果使用toFixed(2) 会出现问题,两个结果会相差一分钱。

建议:书写顺序不要随意改变,如果想要更准确一点,可以先把小数转换成整数再做运算,然后再把结果转换回小数。

NaN


在 JS 中,凡是数字都可以参与计算,而且任何数字除以0都会返回无穷,只有一个例外,0除以0会返回NaN;NaN 的字面意思虽然是not a number(不是一个数字),但它实际上是一个数字,它是一个不等于任何数字的数字,而且它也不等于它自己(这是 JS 中唯一一个与自身不相等的值)。我们可以使用 isNaN() 可以用来检测一个值是否是NaN,但这个函数的真正用途其实是用于判断传入参数是否可以转换成数字,可以的话会返回false,不可以就返回true。

其他数据类型转换成数字


Number() 可以把任何类型转换成数字,返回值是普通数字或NaN(其实它也是一个数字);

parseInt() 、parseFloat() 用于处理字符串,建议使用时始终把10作为第二个参数,表示传进来的值是十进制的,因为我们平时使用的多为十进制的数字;

String


推荐使用单引号,因为有时会把 JS 和 HTML 混合一起写,而 HTML 是使用双引号的,所以在 JS 中对字符串使用单引号可以避免引号闭合错误的情况。

常用的转义符:\n(换行符) 和 \u(表示Unicode编码);

关于中文字符串:

'高级程序设计'.length;  // 6

字符串是不可变的(其实任何基础类型都是不变的):

var abcd = ‘abcd’;abcd.length = 5;alert(abcd.length);  // 4

碰到点(.)的时候 JS 会先把点前面的数据转换成对象,再对这个对象调用方法,之后把这个对象销毁。所以上面 abcd.length = 5; 和 alert(abcd.length); 并不是操作同一个对象,而是分别操作两个不同的临时的对象,这两个对象在操作完成之后都马上被销毁了,操作结果不会被保存。

其他数据类型转换成字符串


toString() 可以把除了null 和undefined 之外的其他数据转换成字符串;

String() 则可以把所有数据转换成字符串;

 

Number、Boolean、String的相同点


  • 都有一个和自己同名的函数,可以进行数据转换;
  • 这些函数的首字母都是大写的;
  • 这三个函数都可以接收任意类型的参数,可以把所有数据转换成对应的数据类型;
  • 转换结果和自己的类型对应,如Number会把数据转换成数字;
  • 结果基本都可以分成两类:Boolean是true和false;Number是普通数字和NaN(其实也是一个数字);String是字符串和’[object, Object]’(对象);

整理自沙翼老师的前端音频教程#陪你读书#第五期(喜马拉雅)

(真心推荐有缘分看到我博客的人儿去听听啦~)

转载于:https://www.cnblogs.com/sukiY/p/9255534.html

Number and String in JS相关推荐

  1. JavaScript封装方法,兼容参数类型为Number和String

    /*** 依据Kind确定跳转到目标列表页面.* @param kind*/function gobackByKind(kind) {var kindStr = String(kind);switch ...

  2. Javascript 对象二(Number、String、Boolean、Array、Date、Math、RegExp)

    Javascript 对象二(Number.String.Boolean.Array.Date.Math.RegExp) Number 数字 对象 String 字符串 对象 Boolean 布尔 对 ...

  3. Number与String之间的类型转换,进制转换

    类型转换 将number转换为string类型 var num = 4399; // 1.使用toString方法 var numToStr = num.toString(); // 2.使用`${} ...

  4. javascript number转string不用科学计数法_[JavaScript]之数据类型篇

    JavaScript共有7种数据类型:number,string,boolean,symbol,undefined,null,object 1. number 整数和浮点数 JavaScript 内部 ...

  5. Python常见数据类型之Number、String、List(1)

    目录 一.Number(数字) 二.String(字符串) 三.List(列表) Python3 的六个标准数据类型: 不可变数据(3 个):Number(数字).String(字符串).Tuple( ...

  6. arm java 性能怎么样,ARM v6上使用java的Number to String转换性能

    我在ARM v6处理器上运行 Java软件.这个程序的性质要求我将一些数字(int或float)转换为String.处理器运行速度为850Mhz. Java Runtime是OpenJDK Zero ...

  7. Number类型及方法(js)

    JavaScript的基本包装类型之Number类型:代表数值数据类型和提供数值常数的对象. Number的方法:         1. toString(): 把数字转换为字符串,使用指定的基数,括 ...

  8. java string number_Java 学习(6):java Number Math String 数组...常用类型

    1 char charAt(int index):返回指定索引处的 char值.2 intcompareTo(Object o):把这个字符串和另一个对象比较.3 intcompareTo(Strin ...

  9. Invalid prop: type check failed for prop maxLength. Expected Number, got String.

    背景今天使用Ant Design of Vue的input表单的maxlength属性报错了 <a-input:value="value"placeholder=" ...

  10. number to string - LeetCode【数字 = 字符串】

    228. Summary Ranges 让我们找出连续的序列,然后首尾两个数字之间用个"->"来连接,那么我只需遍历一遍数组即可,每次检查下一个数是不是递增的,如果是,则继续 ...

最新文章

  1. python 爬虫气象气象定时报 气象预警推送
  2. DL之DNN优化技术:神经网络算法简介之数据训练优化【mini-batch技术+etc】
  3. cent 8.0 安装tomcat 9.0_nginx+tomcat会话保持方案探讨
  4. unknown column in field list_tf.feature_column的特征处理探究
  5. leetcode 131. 分割回文串(dp+回溯)
  6. 飞鸽传书,去看了下WEBBROWSER的资料
  7. 一个很漂亮的jQuery动画隐藏登陆框,css很漂亮
  8. 检索召回 技术综述!
  9. RequireJS进阶(一)
  10. selenium1和2区别
  11. 14 款(移动端)UI 框架
  12. Ubuntu 18.04 究极美化教程
  13. 服务器怎么增加路由,给Windows服务器添加永久路由的脚本
  14. 微信小程序实现路线规划demo
  15. 启动jar 日志输出
  16. Google Earth Engine(GEE)——ee.Reducer.percentile筛选影像百分比案例分析
  17. ded汉语意思_DED是什么意思
  18. 下载文件plus.downloader.createDownload
  19. 使用大神U盘工具安装原版系统的操作方法
  20. 西南交大计算机绘图a答案,西南交大 计算机绘图A客观题答案(1-3次作业).doc

热门文章

  1. 什么是js面向对象??
  2. python 服务端判断客户端异常断开
  3. BZOJ 1003 [ZJOI2006]物流运输trans ★(Dijkstra + DP)
  4. Moon一个无视Linq,无视实体类的设计思路.(不要错过,看了之后, 让我们从此以后不再羡慕linq to entiy!)...
  5. 梦想是如何失去的?看小米和魅族发布有感
  6. photoshop cs3 无法复制文字的解决方案
  7. 将商品金额小写转换成大写
  8. SIGPIPE信号处理
  9. 爬虫实例十 XX酒店详情信息
  10. yorc.json_调用腾讯ORC接口识别图片文字