js 保留两位小数--乘以100或除以100之后 小数为5没有四舍五入_js小数乘以100

 function formatNum(num) {
            //1. 可能是字符串,转换为浮点数
            //2. 乘以100 小数点向右移动两位
            //3. Math.round 进行四舍五入
            //4. 除以100 小数点向左移动两位 实现保留小数点后两位
            var value = Math.round(parseFloat(num) \* 100) / 100;
            // var value = Math.round(num \* Math.pow(10, 2)) / Math.pow(10, 2);

            console.log('value', value)
            // 去掉小数点 存为数组
            var arrayNum = value.toString().split(".");
            //只有一位(整数)
            if (arrayNum.length == 1) {
                // return arrayNum[0] + ".00"; 
                return value.toString() + ".00";
            }
            if (arrayNum.length > 1) {
                //小数点右侧 如果小于两位 则补一个0
                if (arrayNum[1].length < 2) {
                    return value.toString() + "0";
                }
                return value;
            }

        }

        console.log('parseFloat(1015.5)', parseFloat(1015.5)); // 10.15
        console.log('Math.round(1015.5)', Math.round(1015.5)); //1016
        console.log('Math.round(parseFloat(num) \* 100)', Math.round(parseFloat(10.155) \* 100))

在这里插入图片描述
应输出 “10.16” 但是结果是 10.15

另一个写法

		//四舍五入方法,保留小数方法
        //data:需要处理的数据 size:需要保留几位小数
        function fourFive(data,size) {
            let a = Math.pow(10,size)
            //最终四舍五入得出的结果
            let result =  Math.round(data \* a) / a
            //保留小数位操作
            let b = result.toString().split(".")
            if(b.length>1){
                let c = b[1].toString().split("").length
                if(c == size ){
                    return result
                }else{
                    return result.toFixed(size)
                }
            }else{
                return result.toFixed(size)
            }
        }


结果同样是10.15

解决:

 value = +(Math.round(num + "e+2") + "e-2")

这段JavaScript代码使用了一种巧妙的方式来处理浮点数的四舍五入问题,尤其是当你想要四舍五入到特定的小数位数时。代码的核心思想是利用科学记数法(即使用“e”表示的指数形式)来先放大数字,进行四舍五入,然后再缩小回去。下面是对这一过程的详细解释:

  1. num + "e+2": 这一部分将数字num转换成字符串,并加上"e+2",表示将num乘以10^2(即100)。这样做的目的是将num中需要四舍五入的小数部分移到整数位,以便进行精确的四舍五入操作。例如,如果num10.155,这一步会将其转换成"1015.5e+2",然后因为是数值和字符串的连接,所以实际上是"10.155e+2"
  2. Math.round(...): 接下来,Math.round函数对上一步得到的字符串表示的数值进行四舍五入。由于步骤1中已经通过指数形式放大了数值,这里的四舍五入操作能够正确地应用到原始数值的小数部分。继续上面的例子,四舍五入操作应用于1015.5,结果是1016
  3. ... + "e-2": 四舍五入后的结果再次被转换成字符串,并加上"e-2",这表示将数值除以10^2。这一步是为了将步骤1中放大的数值缩小回原来的大小。以1016为例,加上"e-2"后,字符串变为"1016e-2"
  4. +(...): 最外层的加号是一元加法操作符,它将字符串强制转换回数值类型。所以,"1016e-2"会被转换成10.16

综上所述,这段代码通过使用科学记数法来先放大数值进行四舍五入,然后再缩小,从而实现了对浮点数进行精确四舍五入到指定小数位的操作。这种方法有效地规避了直接四舍五入浮点数时可能遇到的精度问题。

代码

方法一

不好的点是:只有一位小数或者整数的时候返回的是string类型

css

1,盒模型
2,如何实现一个最大的正方形
3,一行水平居中,多行居左
4,水平垂直居中
5,两栏布局,左边固定,右边自适应,左右不重叠
6,如何实现左右等高布局
7,画三角形
8,link @import导入css
9,BFC理解

js

1,判断 js 类型的方式
2,ES5 和 ES6 分别几种方式声明变量
3,闭包的概念?优缺点?
4,浅拷贝和深拷贝
5,数组去重的方法
6,DOM 事件有哪些阶段?谈谈对事件代理的理解
7,js 执行机制、事件循环
8,介绍下 promise.all
9,async 和 await,
10,ES6 的 class 和构造函数的区别
11,transform、translate、transition 分别是什么属性?CSS 中常用的实现动画方式,
12,介绍一下rAF(requestAnimationFrame)
13,javascript 的垃圾回收机制讲一下,
14,对前端性能优化有什么了解?一般都通过那几个方面去优化的?

2,介绍一下rAF(requestAnimationFrame)
13,javascript 的垃圾回收机制讲一下,
14,对前端性能优化有什么了解?一般都通过那几个方面去优化的?

[外链图片转存中…(img-Qr7bHey7-1726008121247)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值