首页 > 其他分享 >js-正负数保留小数点特定位数

js-正负数保留小数点特定位数

时间:2024-03-13 17:44:37浏览次数:25  
标签:10 val intDecSet changeNum 小数点 js 正负数 let fValue

        function round(num, iCount) {
            // iCount 保留几位小数
            let changeNum = num
            let zs = true
            // 判断是否是负数
            if (changeNum < 0) {
                changeNum = Math.abs(changeNum)
                zs = false
            }
            const iB = Math.pow(10, iCount)
            // 有时乘100结果也不精确
            const value1 = changeNum * iB
            let intDecSet = []
            let intDecHun = []

            let fValue = value1
            const value2 = value1.toString()
            const iDot = value2.indexOf('.')

            // 如果是小数
            if (iDot !== -1) {
                intDecSet = changeNum.toString().split('.')

                // 如果是科学计数法结果
                if (intDecSet[1].indexOf('e') !== -1) {
                    return Math.round(value1) / iB
                }
                intDecHun = value2.split('.')

                if (intDecSet[1].length <= iCount) {
                    return parseFloat(num, 10)
                }

                const fValue3 = parseInt(intDecSet[1].substring(iCount, iCount + 1), 10)

                if (fValue3 >= 5) {
                    fValue = parseInt(intDecHun[0], 10) + 1
                } else {
                    // 对于传入的形如111.834999999998 的处理(传入的计算结果就是错误的,应为111.835)
                    if (fValue3 === 4 && intDecSet[1].length > 10 && parseInt(intDecSet[1].substring(iCount + 1, iCount + 2), 10) === 9) {
                        fValue = parseInt(intDecHun[0], 10) + 1
                    } else {
                        fValue = parseInt(intDecHun[0], 10)
                    }
                }
            }
            // 如果是负数就用0减四舍五入的绝对值
            let val = zs ? (fValue / iB) : (0 - fValue / iB)

            const d = val.toString().split('.')
            if (d.length === 1) {
                return val.toString() + '.00'
            }
            if (d.length > 1) {
                if (d[1].length < 2) {
                    val = val.toString() + '0'
                }
                return val
            }
        }

标签:10,val,intDecSet,changeNum,小数点,js,正负数,let,fValue
From: https://www.cnblogs.com/axingya/p/18071175

相关文章

  • Threejs实现模型对接音乐节奏
            昨天看到一个网站是2维的柱形图随着音乐节奏起伏,我突然想到二维形状可以起伏,三维应该也可以,最终原理应该都是将音乐频谱分解为数据,通过数据的切换不断地改变图形的形状来实现,因为找了分析音乐频谱的源码,解析完,再通过threejs的动画实现了3D场景下的模型随着音乐......
  • pnpm : 无法加载文件 D:\dev\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。有关详
    一、问题现象  二、问题原因  1、此问题是由于PowerShell的执行策略限制了脚本的执行//通过命令可以查看当前策略Get-ExecutionPolicy     2、策略说明:Restricted:默认策略,禁止运行任何脚本,除非明确允许。AllSigned:只允许运行经由数字签名并由受信......
  • 2024年最受欢迎的Vue.js组件库 - ViewDesign全面解析
    引言作为现代Web开发不可或缺的一员,Vue.js以其轻量、高效、渐进式的理念备受开发者青睐。而在Vue.js生态系统中,第三方组件库则扮演着桥梁的角色,为开发者提供可复用的UI组件,从而极大提高了开发效率。在2024年,有许多优秀的Vue组件库脱颖而出,但毫无疑问,ViewDesign因其卓越的......
  • 关于JSON转换总结
    关于JSON转换总结前言JSON是JavaScript数据类型中的一个子集,目前主流的浏览器都使用了通用的JavaScript引擎组件,所以在解析JSON格式时具有良好的兼容性。这便是“JavaScriptObjectNotation”(缩写为JSON)诞生的由来。一些常用的JSON解析依赖库有阿里的fastjson和国外......
  • JSON序列化之旅:深入理解.NET中的JsonResult与自定义ContractResolver
    在.NET开发的世界里,JSON已成为一种无处不在的数据交换格式。无论是WebAPI还是微服务架构,我们都经常需要将对象序列化成JSON格式,以方便客户端的接收和处理。今天,我想和大家分享一段关于.NET中JsonResult使用的代码,以及它背后的一些细节。这段代码来自于一个典型的ASP.NETCore应......
  • 关于js数组方法sort()负数排序的陷阱
    今天在刷力扣题的时候遇到数组排序的问题,想着图个方便就使用了arr.sort(),刚开始用正数进行测试用例的时候没有出错,问题:在使用负数的测试用例时,预期目标是 [-10,-2,-1...1,2,3],结果出现了 [-1,-2,-10......1,2,3]这样的结果解析:在网上找了一下发现,sort()这个方法:默认......
  • JS 链表 - 笔记
    代码:classListNode{/***@constructor*@param{number}val*@param{ListNode}next*/constructor(val,next){this.val=(val===undefined?0:val);this.next=(next===undefined?null:next);......
  • JS 监听浏览器各个标签间的切换-visibilitychange事件介绍
    文章目录一、JS监听浏览器各个标签间的切换二、document的可见性属性三、示例:监听标签,控制视频播放与暂停一、JS监听浏览器各个标签间的切换以前看到过一些网页,在标签切换到其它地址时,网页上的标题上会发生变化,一直不知道这个是怎么做的,最近查了一些资料才发现......
  • js实现大文件分片上传
    一个上传组件,需要具备的功能:需要校验文件格式可以上传任何文件,包括超大的视频文件(切片)上传期间断网后,再次联网可以继续上传(断点续传)要有进度条提示已经上传过同一个文件后,直接上传完成(秒传)前后端分工:前端:文件格式校验文件切片、md5计算发起检查请求,把当前文件的hash发送给服务......
  • JS ATM练习案例(复习循环知识)
    需求:用户可以选择存钱、取钱、查看余额和退出功能。分析:1循环时反复出现提示框,所以提示框写到循环里面。2.退出的条件是4,所以是4就会结束循环3.提前准备一个金额预存储4取钱为减法操作,存钱为加法操作,查看为直接显示数额。5输入不同的值,可以用switch来执行不同操作。<!D......