javaScript中Number数字类型方法入门
前言
Number和Math都属于JavaScript中的内置对象,Number数字类型作为基础数据类型,我们在开发过程中会经常用到,包括数字精度的格式化,还有字符串转换成数字等操作。
Number数字
自带属性值
Number.EPSILON 两个可表示(representable)数之间的最小间隔。
Number.MAX_SAFE_INTEGER JavaScript 中最大的安全整数 (2^53 - 1)。
Number.MAX_VALUE 能表示的最大正数。最小的负数是 -MAX_VALUE。
Number.MIN_SAFE_INTEGER JavaScript 中最小的安全整数 (-(2^53 - 1)).
Number.MIN_VALUE 能表示的最小正数即最接近 0 的正数 (实际上不会变成 0)。最大的负数是 -MIN_VALUE。
Number.NaN 特殊的“非数字”值。
Number.NEGATIVE_INFINITY 特殊的负无穷大值,在溢出时返回该值。
Number.POSITIVE_INFINITY 特殊的正无穷大值,在溢出时返回该值。
基础使用
new Number实例化数字对象和Number强转数字字符串,两个值的并不相等
var value1 = new Number("123");
this.value1 = value1;
console.log(`value1 === 123 is ${value1 === 123}`); // value1 === 123 is false
var value2 = Number("123");
this.value2 = value2;
console.log(`value2 === 123 is ${value2 === 123}`); // value2 === 123 is true
// 判断Number类型
console.log(value1 instanceof Number);
console.log(value2 instanceof Number);
Number将转换字符串为数字
Number("123"); // 123
Number("12.3"); // 12.3
Number("12.00"); // 12
Number("123e-1"); // 12.3
Number(""); // 0
Number(null); // 0
Number("0x11"); // 17
Number("0b11"); // 3
Number("0o11"); // 9
Number("foo"); // NaN
Number("100a"); // NaN
Number("-Infinity"); //-Infinity
Number判断数字是否是NAN
let number1 = new Number("123");
let number2 = 123;
let number3 = "string";
let number4 = null;
console.log(Number.isNaN(number1)); // false
console.log(Number.isNaN(number2)); // false
console.log(Number.isNaN(number3)); // false
console.log(Number.isNaN(number4)); // false
console.log(Number.isNaN(NaN)); // true
Number.isFinite 是否是一个有穷数
console.log(Number.isFinite(1 / 0));
// false
console.log(Number.isFinite(10 / 5));
// true
console.log(Number.isFinite(0 / 0));
// false
Number.isInteger 判断给定的参数是否为整数
function checkInteger(x, y) {
if (Number.isInteger(y / x)) {
return "整数";
}
return "非整数";
}
console.log(checkInteger(5, 10));
// "整数"
console.log(checkInteger(5, 11));
// "非整数"
Number.isSafeInteger 判断传入的参数值是否是一个“安全整数”(safe integer)
备注:
Number.isSafeInteger() 方法用来判断传入的参数值是否是一个“安全整数”(safe integer)。
一个安全整数是一个符合下面条件的整数:
可以准确地表示为一个IEEE-754双精度数字,
其IEEE-754表示不能是舍入任何其他整数以适应IEEE-754表示的结果。.
比如,2^53 - 1 是一个安全整数,它能被精确表示,在任何 IEEE-754 舍入模式(rounding mode)下,没有其他整数舍入结果为该整数。作为对比,2^53 就不是一个安全整数,它* 能够使用 IEEE-754 表示,但是 2^53 + 1 不能使用 IEEE-754 直接表示,在就近舍入(round-to-nearest)和向零舍入中,会被舍入为 2^53。
安全整数范围为 -(2^53 - 1)到 2^53 - 1 之间的整数,包含 -(2^53 - 1)和 2^53 - 1。
Number.isSafeInteger(3); // true
Number.isSafeInteger(Math.pow(2, 53)); // false
Number.isSafeInteger(Math.pow(2, 53) - 1); // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger("3"); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true
Number.parseFloat 将字符串数字转成数字类型
备注:
- 方法可以把一个字符串解析成浮点数。该方法与全局的 parseFloat() 函数相同,并且处于 ECMAScript 6 规范中(用于全局变量的模块化)。
- 给定值被解析成浮点数,如果无法被解析成浮点数,则返回NaN
function checkFloat(r) {
return parseFloat(r);
}
console.log(checkFloat(4.567));
// 4.567
console.log(checkFloat("4.567abcdefgh"));
// 4.567
console.log(checkFloat("abcdefgh"));
// NaN
Number.parseInt 将数字字符串转成整数
/**
*
* Number.parseInt()
* 方法依据指定基数 [ 参数 radix 的值],把字符串 [ 参数 string 的值] 解析成整数。
* @params string:要解析的值。 如果此参数不是字符串,则使用ToString抽象操作将其转换为字符串。忽略此参数中的前导空格。
* @params radix:一个介于2到36之间的整数,代表字符串的基数(数学数字系统中的基)。小心-这并不是默认为10。
* 从给定字符串中解析的整数。如果基数小于11,且第一个非空白字符不能转换为数字,则返回NaN。
*
* */
function checkInt(x, base) {
const parsed = parseInt(x, base);
if (isNaN(parsed)) {
return 0;
}
return parsed * 100;
}
console.log(checkInt(" 0xF", 16));
// 1500
console.log(checkInt("321", 2));
// 0
Number.prototype.toFixed() 把数字转换为字符串,返回小数点后有指定位数的数字
var numObj = 5.123456;
var n = numObj.toFixed(2); // 5.12
Number.prototype.toPrecision() 以指定的精度返回该数值对象的字符串表示
var numObj = 5.123456;
console.log("numObj.toPrecision() is " + numObj.toPrecision()); // 输出 5.123456
console.log("numObj.toPrecision(5) is " + numObj.toPrecision(5)); // 输出 5.1235
console.log("numObj.toPrecision(2) is " + numObj.toPrecision(2)); // 输出 5.1
console.log("numObj.toPrecision(1) is " + numObj.toPrecision(1)); // 输出 5
// 注意:在某些情况下会以指数表示法返回
console.log((1234.5).toPrecision(2)); // "1.2e+3"
Number 转换 Date 对象
var d = new Date("December 17, 1995 03:24:00");
console.log(Number(d));
结尾
在Number数字类型中,使用最多的应该是:
- isNaN判断数字是否是非数字NAN
- parseFloat将数字字符串转成数字类型
- parseInt 解析字符串转成整数
- toPrecision作为数字的方法,返回该数值的指定精度,包含小数位
- toFixed 返回指定小数点精度的数字,需要注意和toPrecision区分开来
源码地址
文章个人博客地址:javaScript中Number数字类型基本方法入门
欢迎关注公众号:程序猿布欧,不定期更新一些前端入门文章
创作不易,转载请注明出处和作者。
javaScript中Number数字类型方法入门的更多相关文章
- JavaScript中判断对象类型方法大全1
我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...
- javascript类型系统——Number数字类型
× 目录 [1]定义 [2]整数 [3]浮点数[4]科学记数[5]数值精度[6]数值范围[7]特殊数值[8]转成数值[9]实例方法 前面的话 javascript只有一个数字类型,它在内部被表示为64 ...
- JavaScript中判断对象类型方法大全2
在JavaScript中,有5种基本数据类型和1种复杂数据类型,基本数据类型有:Undefined, Null, Boolean, Number和String:复杂数据类型是Object,Object ...
- JavaScript中Number数字数值浮点运算有误差
JavaScript浮点运算的一个bug. 比如:7*0.8 JavaScript算出来就是:5.6000000000000005 //调用:numberExcept(arg1,arg2) //返回值 ...
- JavaScript中判断变量类型最简洁的实现方法以及自动类型转换(#################################)
这篇文章主要介绍了JavaScript中判断整字类型最简洁的实现方法,本文给出多个判断整数的方法,最后总结出一个最短.最简洁的实现方法,需要的朋友可以参考下 我们知道JavaScript提供了type ...
- JavaScript中判断对象类型的种种方法
我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...
- 转 JavaScript中判断对象类型的种种方法
我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...
- JavaScript中Number常用属性和方法
title: JavaScript中Number常用属性和方法 toc: false date: 2018-10-13 12:31:42 Number.MAX_VALUE--1.79769313486 ...
- JavaScript中两种类型的全局对象/函数【转】
Snandy Stop, thinking is the essence of progress. JavaScript中两种类型的全局对象/函数 这里所说的JavaScript指浏览器环境中的包括宿 ...
随机推荐
- MySQL 里记录货币用什么字段类型好?
NUMERIC 和 DECIMAL 类型被 MySQL 实现为同样的类型,这在 SQL92 标准允 许.他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数 据.当声明一个类是这些类型之 ...
- Spring MVC的异常处理 ?
可以将异常抛给Spring框架,由Spring框架来处理:我们只需要配置简单的异常处理器,在异常处理器中添视图页面即可.
- 使用Spring框架的好处是什么?
轻量:Spring 是轻量的,基本的版本大约2MB. 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们. 面向切面的编程(AOP):Spring支持 ...
- C# 如何让new 出来的form显示在最外层?
/// <summary> /// 显示比对不同点的位置 /// </summary> public void showDiffImage() { //在此处弹出不一样图 Bi ...
- Redis的数据类型操作(二)
1.String:key-value(做缓存) Redis中所有的数据都是字符串.命令不区分大小写,key是区分大小写的.Redis是单线程的.Redis中不适合保存内容大的数据. get.set.i ...
- 动态JDK代理方式-实现类增强
需求描述: 抽取dao层开启和提交事物交由代理类一并执行 分析: 假如UserDao接口中有很多方法,例如addUser().deleteUser().updateUser()等等,需要频繁的和数据库 ...
- vue项目给less传递参数,出现 Invalid options object. Less Loader has been initialized using an options object that does not match the API schema.
vue-cli创建的项目,想使用less-loader的全局变量配置,但是配置(vue.config.js文件)项出现 error in ./src/components/BookFooter.vue ...
- 一个模型预测控制(MPC)的简单实现
1 生活中的启示 情景如下:你们团队每天早晨开一次例会,主要会议内容是你汇报工作进度,领导根据工作目标和工作进度,制定当天的工作计划,你领到工作计划后开始工作.每天都这样周而复始,从领导的角度看,这件 ...
- 老版本的Spring应用该如何应对CVE-2022-22965漏洞?
昨天,在发布了<Spring官宣承认网传大漏洞,并提供解决方案>之后.群里就有几个小伙伴问了这样的问题:我们的Spring版本比较老,该怎么办?这是一个好问题,所以DD今天单独拿出来说说. ...
- Linux 0.11源码阅读笔记-块设备驱动程序
块设备驱动程序 块设备驱动程序负责实现对块设备数据的读写功能.内核代码统一使用缓冲块间接和块设备(如磁盘)交换数据,缓冲区数据通过块设备驱动程序和块设备交换数据. 块设备的管理 块设备表 内核通过一张 ...