JS中的Math对象与toFixed方法的底层原理

目录

一、Math库中常用方法和属性

1、Math.PI

2、取整

1)、Math.ceil()

2)、Math.floor()

3)、Math.round()

3、Math.abs()

4、Math.sqrt()

5、Math.pow(底数,指数)

6、Math.max(多个值)和Math.min(多个值)

7、Math.random()

二、随机整数案例

1、0-10的随机整数(不包含10)

2、0-10的随机整数(包含10)

3、10-20的随机整数(不包含20)

4、10-20的随机整数(包含10)

5、封装一个产生随机数的函数(不包含最大值)

6、封装一个产生随机数的函数(包含最大值)

三、toFixed的使用

四、toFixed的底层原理实现


Math库和toFixed方法都是对JS中的数字(Number)类型进行操作的。

一、Math库中常用方法和属性

Math库中保存着许多数学中的方法,该库是浏览器自带的库,不需要我们手动的创建。

1、Math.PI

该属性保存的是圆周率,可以快速的得到圆周率,从而用于计算圆的相关东西。

2、取整

1)、Math.ceil()

向上取整,只要是小数,就会变成比原来大的整数。

console.log(Math.ceil(3.1)) //4
console.log(Math.ceil(3.5)) //4

注意:小数位数不能超过15位,超过后会失效。

2)、Math.floor()

向下取整,只要是小数,无论超过多少,都省略小数部分,变成比原来小的整数,和parseInt类似。

console.log(Math.ceil(3.1)) //3
console.log(Math.ceil(3.5)) //3

3)、Math.round()

小数会进行四舍五入,但只看第一位小数。

console.log(Math.round(3.45)) //3

3、Math.abs()

取绝对值。

console.log(Math.abs(-10)) //10

4、Math.sqrt()

开方,只能得到算术平方根。

console.log(Math.sqrt(25)) //5

5、Math.pow(底数,指数)

乘方,按照指定的底数和指数算出结果。

console.log(Math.pow(3,3)) //27

6、Math.max(多个值)和Math.min(多个值)

找出多个值中的最大值和最小值。

console.log(Math.max(5,10,60,50)) //60
console.log(Math.min(5,10,60,50)) //5

不支持传入数组参数,比较数组的最大值和最小值

解决:Math.max/min.apply(Math,arr)

7、Math.random()

产生0-1之间的随机小数,但不包括1

console.log(Math.random()) 

二、随机整数案例

1、0-10的随机整数(不包含10)

var res = Math.floor(Math.random() * 10);
console.log(res);

2、0-10的随机整数(包含10)

var res=Math.floor(Math.random()*(10+1))
console.log(res)

3、10-20的随机整数(不包含20)

var res = Math.floor(Math.random() * 10)+10;
console.log(res);

4、10-20的随机整数(包含10)

var res = Math.floor(Math.random() * 11)+10;
console.log(res);

5、封装一个产生随机数的函数(不包含最大值)

function getRandom(min,max){
    if(min>max){
        console.error("参数有误")
        return
    }
    return Math.floor(Math.random()*(max-min))+min
}

6、封装一个产生随机数的函数(包含最大值)

function getRandom(min,max){
    if(min>max){
        console.error("参数有误")
        return
    }
    return Math.floor(Math.random()*(max-min+1))+min
}

三、toFixed的使用

toFixed的作用是保留执行位数的小数,在保留的同时会四舍五入。

使用:变量.toFixed(n)

var price=3.1415
console.log(price.toFixed(2)) //3.14

如果原本的位数比要保留的位数小,会自动补0。

var price2=123.4
console.log(price2.toFixed(2)) //123.40

注意:toFixed的返回类型是【字符串】,所以需要进行类型转换之后才可以计算。

四、toFixed的底层原理实现

function tofixed(num, n) {
    // 要取多少位小数,先乘10的多少次方
    num *= Math.pow(10, n);
    // 再四舍五入取整,因为toFixed有四舍五入
    num = Math.round(num);
    // 再除以10的多少次方就是保留多少位的小数了
    num /= Math.pow(10, n);
    console.log(num);
    return num;
}
tofixed(Math.PI, 2);

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回答: 在JavaScript,toFixed()方法用于将数字转换为指定小数位数的字符串表示。该方法接受一个参数,即要保留的小数位数。\[1\] 例如,如果我们有一个数字324.12,并使用toFixed(1),则结果将是324.1。同样,如果我们使用toFixed(3),结果将是324.120。\[1\] 但是,toFixed()方法在处理某些情况下可能会出现精度问题。为了解决这个问题,有人重写了toFixed()方法,通过扩大原数字的倍数来保留指定的小数位数,并使用Math.floor()方法来获取最接近的整数。\[2\] 但是,有时候在使用toFixed()方法时,可能会出现死循环的问题,这可能是因为在toFixed()方法回调了toFixed()方法,导致无法退出循环。\[3\] 因此,在使用toFixed()方法时,需要注意这些问题,并根据具体情况选择合适的解决方案。 #### 引用[.reference_title] - *1* [jstoFixed()方法](https://blog.csdn.net/greek7777/article/details/120464309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [JS的toFixed方法](https://blog.csdn.net/qq_40805231/article/details/101271638)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值