javascript - Number和Math相关方法

avascript 数值
简介:
JavaScript 采用“IEEE 754 标准定义的双精度64位格式表示数字。

javascript Number属性

console.log(Number.EPSILON)  //=>表示 1 和大于 1 的最小的浮点数2.220446049250313e-16
console.log(Number.MAX_SAFE_INTEGER)    //=>常量表示在 JavaScript 中最大的安全整数9007199254740991
console.log(Number.isSafeInteger(8));//true
console.log(Number.MIN_SAFE_INTEGER);//-9007199254740991
console.log(Number.MIN_VALUE);//5e-324
console.log(Number.NEGATIVE_INFINITY);//负无穷大。-Infinity
console.log(Number.POSITIVE_INFINITY);//正无穷大Infinity
console.log(Number.NaN);//NaN  非数字

javascript Number方法

Number.isFinite(value) 返回一个 布尔值 表示给定的值是否是一个有穷数。
Number.isInteger(value) 返回 判断给定值是否是整数的 Boolean 值。
Number.isNaN(value) 返回一个布尔值,表示给定的值是否是 NaN。
Number.isSafeInteger(testValue) 返回 一个布尔值 表示给定的值是否是一个安全整数(safe integer)。
numObj.toFixed(digits) 返回所给数值的定点数表示法的字符串形式。 digits数点后数字的个数;介于 0 到 20 (包括)之间 默认为 0
Number.parseFloat(string) 返回给定值被解析成浮点数,如果无法被解析成浮点数,则返回NaN
Number.parseInt(string[, radix]) radix基数 可以根据给定的进制数把一个字符串解析成整数。

js的进制的转换
 //进制的转换
        var num = 150;
        /*
        * 十进制转换成二进制,八进制,十六进制,十进制
        * */
        console.log(num.toString(2));
        console.log(num.toString(8));
        console.log(num.toString(10));
        console.log(num.toString(16));
        /*
        * 将十进制转换成其二进制,八进制,十六进制,十进制
        * */
        console.log(parseInt(10010110,2));
        console.log(parseInt(226,8));
        console.log(parseInt(150,10));
        console.log(parseInt(96,16));
结果:
10010110
226
150
96
150
150
150
150
1
2
3
4
5
6
7
8

js 所能表示的最大整数

Math.pow(2, 53)
//2的53次方
结果:9007199254740992
 console.log(Math.pow(2, 53));
 console.log(Math.pow(2, 53)+1);
结果:9007199254740992
    9007199254740992

Number的精度共十六位,超出这个说+1也会造成精度不准确
Math.pow(2, 53)+1 ===9007199254740992
同理parseInt()将字符串转换成整形也不能超出这个数
var str = '9007199254740993';
console.log(parseInt(str));
结果:9007199254740992

所以在前后台交互中将超过这个数据的值转为字符串处理

js math,number操作
js 数字

   var num = 126.2365892224;
    console.log(num.toFixed(2));
    console.log(num.toExponential(2));
    console.log(num.toPrecision(2));
    console.log(parseInt(num));
    console.log(parseFloat(num));
    console.log(Number(num));

1. Math 对象

1.1 介绍

Math 对象,是数学对象,提供对数据的数学计算,如:获取绝对值、向上取整等。无构造函数,无法被初始化,只提供静态属性和方法。

1.2 构造函数

无 :Math 对象无构造函数,无法被初始化,只提供静态属性和方法。

1.3 静态属性

1.3.1 Math.E 常量e。返回自然对数的底数:2.718281828459045

1.3.2 Math.PI :常量π。返回圆周率的值 :3.141592653589793

1.4 静态方法

**1.4.1 Math.sin(value) :**正弦函数
**1.4.2 Math.cos(value)** **:**余弦函数
**1.4.3 Math.tan(value) :**正切函数
**1.4.4 Math.asin(value) :**反正弦函数
**1.4.5 Math.acos(value) :**反余弦函数
**1.4.6 Math.atan(value) :**反正切函数

1.4.7 Math.abs(value) :返回绝对值

参数:

①value {Number | NumberStr} :数字或者纯数字的字符串。

返回值:

{Number} 返回参数的绝对值数字。若参数不为数字,返回NaN。

示例:
Math.abs(``'123'``); ``// => 123 :纯数字字符串
Math.abs(``'-123'``); ``// => 123
Math.abs(123); ``// => 123
Math.abs(-123); ``// => 123
Math.abs(``'123a'``); ``// => NaN :非纯数字字符串

1.4.8 Math.ceil(value) : 对一个数向上取整,并不是四舍五入

参数:
①value {Number | NumberStr} :数字或者纯数字的字符串。
返回值:
{Number} 返回取整后的值。若参数不为数字,返回NaN。
示例:
Math.ceil(2.7); ``// => 3
Math.ceil(2.3); ``// => 3 :2.3 向上取整返回 3
Math.ceil(-2.7); ``// => -2
Math.ceil(-2.3); ``// => -2
Math.ceil(``'2.7'``); ``// => 3 :纯数字字符串
Math.ceil(``'2.7a'``); ``// => NaN :非纯数字字符串

1.4.9 Math.floor(value) :对一个数向下取整,并不是四舍五入

参数:
①value {Number | NumberStr} :数字或者纯数字的字符串。
返回值:
{Number} 返回取整后的值。若参数不为数字,返回NaN。
示例:
Math.floor(2.7); ``// => 2
Math.floor(2.3); ``// => 2
Math.floor(-2.7); ``// => -3 :-2.7 向下取整返回 -3
Math.floor(-2.3); ``// => -3
Math.floor(``'2.7'``); ``// => 2 :纯数字字符串
Math.floor(``'2.7a'``); ``// => NaN :非纯数字字符串

1.4.10 Math.max(value1,value2...valueN) :返回参数中最大的值

参数:
①value1,value2.....valueN {Number | NumberStr} :数字或者纯数字的字符串。
返回值:
{Number} 返回最大值。若一个参数不为数字,返回NaN。
示例:
Math.max(1, 2, 3, 4, 5); ``// => 5
Math.max(1, 2, 3, 4, ``'5' ); ``// => 5
Math.max(1, 2, 3, 4, ``'a'``); ``// => NaN

1.4.11 Math.min(value1,value2...valueN) :返回参数中最小的值

参数:
①value1,value2.....valueN {Number | NumberStr} :数字或者纯数字的字符串。
返回值:

{Number} 返回最大值。若一个参数不为数字,返回NaN。
示例:
Math.min(1, 2, 3, 4, 5); ``// => 1
Math.min(``'1'``, 2, 3, 4, 5); ``// => 1
Math.min(1, 2, 3, 4, ``'a'``); ``// => NaN

1.4.12 Math.pow(x,y) :返回x的y次方

参数:
①x {Number | NumberStr} :数字或者纯数字的字符串。
②y {Number | NumberStr} :数字或者纯数字的字符串。
返回值:
{Number} 返回x的y次方。若一个参数不为数字,返回NaN。
示例:
Math.pow(2, 3); ``// => 8 :2的3次方
Math.pow(3, 2); ``// => 9 :3的2次方
Math.pow(``'4'``, 2); ``// => 16 :4的2次方
Math.pow(``'2a'``, 2); ``// => NaN

1.4.13 Math.random() :返回一个伪随机数,大于0,小于1.0

参数:
返回值:
{Number} 返回一个伪随机数,大于0,小于1.0
示例:
Math.random(); ``// => 0.8982374747283757
Math.random(); ``// => 0.39617531932890415
Math.random(); ``// => 0.35413061641156673
Math.random(); ``// => 0.054441051790490746

1.4.14 Math.round(value) : 四舍五入后取整

参数:
①value {Number | NumberStr} :数字或者纯数字的字符串。
返回值:
{Integer} 返回参数四舍五入后的整数。若参数不为数字,返回NaN。
示例:
Math.round(2.5); ``// => 3
Math.round(2.4); ``// => 2
Math.round(-2.6); ``// => -3
Math.round(-2.5); ``// => -2 :-2.5四舍五入为 -2
Math.round(-2.4); ``// => -2
Math.round(``'2.7'``); ``// => 3 :纯数字字符串
Math.round(``'2.7a'``); ``// => NaN :非纯数字字符串

1.4.15 Math.sqrt(value) :返回参数的平方根

参数:
①value {Number | NumberStr} :数字或者纯数字的字符串
返回值:
{Number} 返回参数的平方根
示例:
console.log( Math.sqrt(9) ); ``// => 3
console.log( Math.sqrt(16) ); ``// => 4
console.log( Math.sqrt(``'25'``) ); ``// => 5
console.log( Math.sqrt(``'a'``) ); ``// => NaN

2. Number 对象

2.1 介绍

Number 对象,是数字对象,包含js中的整数、浮点数等等。

2.2 定义

var a = 1;
var b = 1.1;

2.3 静态属性

2.3.1 Number.MAX_VALUE :表示JS中最大的数字,约为 1.79e+308
2.3.2 Number.MIN_VALUE :表示JS中最小的数字,约为 5e-324
2.3.3 Number.NaN :返回NaN,表示非数字值,与任意其他数字不等,也包括NaN本身。应使用Number.isNaN() 来进行判断。
2.3.4 Number.NEGATIVE_INFINITY :返回 -Infinity ,表示负无穷。
2.3.5 Number.POSITIVE_INFINITY :返回 Infinity ,表示正无穷。进行计算的值大于Number.MAX_VALUE就返回 Infinity 。

2.4 静态方法

2.4.1 Number.isInteger(value) :判断参数是否为整数

参数:
①value {Number} :数字
返回值:
{Boolean} 返回参数是否为整数 。纯整数的字符串也返回false。
示例:
Number.isInteger(1); ``// => true
Number.isInteger(1.1); ``// => false
Number.isInteger(``'1'``); ``// => false :纯整数的字符串也返回false
Number.isInteger(``'1.1'``); ``// => false
Number.isInteger(``'a'``); ``// => false :非字符串返回false

2.4.2 Number.isNaN(value) :判断参数是否为NaN

参数:
①value {Object} :任意类型
返回值:
{Boolean} 返回参数是否为NaN 。
示例:
Number.isNaN(NaN); ``// => true
Number.isNaN(``'NaN'``); ``// => false :'NaN'字符串,并不为NaN
Number.isNaN(1); ``// => false
Number.isNaN(``'1'``); ``// => false

2.4.3 Number.parseFloat(value) :把参数转换为浮点数

参数:
①value {Number | NumberStr} :数字或者纯数字的字符串
返回值:
{Integer | Float} 返回整数或浮点数数值
示例:
Number.parseFloat(1); ``// => 1 :整数还是返回整数
Number.parseFloat(1.1); ``// => 1.1
Number.parseFloat(``'1aaa'``); ``// => 1 :字符串前面为数字的,只返回数字
Number.parseFloat(``'1.1aaa'``); ``// => 1.1
Number.parseFloat(``'a1'``); ``// => NaN :非数字开头,返回NaN
Number.parseFloat(``'a'``); ``// => NaN

2.4.4 Number.parseInt(value) :把参数转换为整数

参数:
①value {Number | NumberStr} :数字或者纯数字的字符串
返回值:
{Integer} 返回整数数值
示例:
Number.parseInt(1); ``// => 1
Number.parseInt(1.1); ``// => 1 :浮点数返回整数
Number.parseInt(``'1aaa'``); ``// => 1 :字符串前面为数字的,只返回数字
Number.parseInt(``'1.1aaa'``); ``// => 1
Number.parseInt(``'a1'``); ``// => NaN :非数字开头,返回NaN
Number.parseInt(``'a'``); ``// => NaN

2.5 实例方法

2.5.1 toExponential(value) :将一个数字转为指数类型,参数表示小数点后的位数

参数:
①value {Number} :表示小数点后的位数
返回值:
{String} 返回转换后的指数类型字符串
示例:
(123456789).toExponential(2); ``// => 1.23e+8 :小数点2位
(123456789).toExponential(5); ``// => 1.23457e+8 :小数点5位
(123456789).toExponential(10); ``// => 1.2345678900e+8 :小数点10位,不足位数用0补位

2.5.2 toFixed(value) :将一个数字转换为指定小数位数的字符串。不传入参数,就是没小数位。返回值为四舍五入

参数:
①value {Number} :表示小数点后的位数
返回值:
{String} 返回转换后的字符串;不够小数位以0填充;返回值为四舍五入后的值
示例:
console.log((1).toFixed(2)); ``// => 1.00
console.log((1.2).toFixed(2)); ``// => 1.20 :不足位数,以0补位
console.log((1.277).toFixed(2)); ``// => 1.28 :进行了四舍五入

2.5.3 toString() :使用指定的进制,将一个数字转换为字符串。不传入参数,默认为十进制。

参数:
①value {Number} :表示进制数,取值范围:2到36
返回值:
{String} 转换后进制的字符串
示例:
(10).toString(); ``// => 10 :默认为十进制
(10).toString(2); ``// => 1010 :二进制
(10).toString(10); ``// => 10 :十进制
(10).toString(16); ``// => a :十六进制

2.6 应用场景

2.6.1 浮点数的加减乘除异常

说明:Js中的2个浮点数进行加减乘除运算,会返回异常的数值,如:0.2+0.7,返回0.899999999999。可以使用toFixed()方法,指定小数位。
示例:
console.log(0.2 + 0.7); ``// => 0.8999999999999999
console.log(0.7 - 0.5); ``// => 0.19999999999999996
console.log(3.03 * 10); ``// => 30.299999999999997
// 使用toFixed()方法
console.log( (0.2 + 0.7).toFixed(2) ); ``// => 0.90
console.log( (0.7 - 0.5).toFixed(2) ); ``// => 0.20
console.log( (3.03 * 10).toFixed(2) ); ``// => 30.30

2.6.2 减法运算

说明:Js中进行减法运算时,会先把前后的值转换为数值再进行运算。若转换失败,返回NaN。
示例:
console.log(``'1' - 0); ``// => 1 :纯数字字符串减去0,可以快速转换为Nubmer对象
console.log( (``'1' - 0).toFixed(2) ); ``// => 1.00 :快速转换为Nubmer对象后调用实例方法
console.log(``'1' - ``'a'``); ``// => NaN :一方无法转换为Nubmer对象

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,468评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,620评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,427评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,160评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,197评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,334评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,775评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,444评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,628评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,459评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,508评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,210评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,767评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,850评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,076评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,627评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,196评论 2 341