首页 > 其他分享 >decimal插件计算

decimal插件计算

时间:2023-12-15 10:14:59浏览次数:27  
标签:插件 r1 r2 arg1 decimal Decimal toString 计算 arg2




import { Decimal } from 'decimal.js'; //引入 export const cal = { jia(num1, num2) { return new Decimal(num1).add(new Decimal(num2)) }, jian(num1, num2) { return new Decimal(num1).sub(new Decimal(num2)) }, cheng(num1, num2) { return new Decimal(num1).mul(new Decimal(num2)) }, chu(num1, num2) { return new Decimal(num1).div(new Decimal(num2)) }, } /* 解决js计算精度问题 */ export function cheng(arg1, arg2) { var m = 0, s1 = arg1.toString(), s2 = arg2.toString(); try { m += s1.split(".")[1].length } catch (e) {} try { m += s2.split(".")[1].length } catch (e) {} return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m); } export function jia(arg1, arg2) { var r1, r2, m; try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 } try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 } m = Math.pow(10, Math.max(r1, r2)); return (arg1 * m + arg2 * m) / m; } export function chu(arg1, arg2) { var t1 = 0, t2 = 0, r1, r2; try { t1 = arg1.toString().split(".")[1].length } catch (e) {} try { t2 = arg2.toString().split(".")[1].length } catch (e) {} r1 = Number(arg1.toString().replace(".", "")) r2 = Number(arg2.toString().replace(".", "")) return (r1 / r2) * Math.pow(10, t2 - t1); } export function jian(arg1, arg2) { var r1, r2, m, n; try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 } try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 } m = Math.pow(10, Math.max(r1, r2)); //lastmodifybydeeka //动态控制精度长度 // n = (r1 >= r2) ? r1 : r2; return ((arg1 * m - arg2 * m) / m); }

 

// 实例
this.contractPriceExcludingValueAddedTax = cal.chu(this.subtotal, (cal.jia(1, 0)))

这样计算就不会出现精度失真为问题,但是为了保障代价的可靠性还是需要再用户输入框中限制用户输入为整数或者最多两位小数的限制。

标签:插件,r1,r2,arg1,decimal,Decimal,toString,计算,arg2
From: https://www.cnblogs.com/han-know/p/17902742.html

相关文章

  • 3.草图大师安装胚子插件、布料模拟插件
    一、胚子插件导入1.下载及安装胚子插件,https://www.bilibili.com/video/BV1xP411s7su/?vd_source=d1a768a1747fb268e1e40d209416a9d02.在草图大师界面右键勾选 二、布料模拟插件导入1.72版ClothWorks只支持su2020(ruby2.5)及以下,su2021(ruby2.7)控制台,使用1.74版ClothWorks,su2......
  • 12月14日插件的具体使用
    配置好环境之后你就可以选择使用mapper或者service了 调用和mapper基本相同但是提供的调用方法更多了。然后你就能够更方便的开始后端开发了。今天的另一件事是逻辑视图建模这是一个针对于外卖管理系统的逻辑视图建模。(一),分析系统用例,确定对象类外卖管理系统包括”商家......
  • 计算两竖直直线与椭圆围成部分面积
    椭圆方程\(\frac{x^2}{a^2}+\frac{y^2}{b^2}=1\),直线\(x=l\),\(x=r\),计算图中蓝色部分的面积。定积分为了找到这个蓝色区域的面积,我们可以使用定积分来积分椭圆上半部分的函数,并在\(x=l\)和\(x=r\)之间计算面积,然后将结果翻倍,因为椭圆是关于x轴对称的。椭圆方程......
  • springboot032 图书馆管理系统-计算机毕业设计源码+LW文档
    摘 要随着社会的发展,计算机的优势和普及使得阿博图书馆管理系统的开发成为必需。阿博图书馆管理系统主要是借助计算机,通过对图书借阅等信息进行管理。减少管理员的工作,同时也方便广大用户对所需图书借阅信息的及时查询以及管理。阿博图书馆管理系统的开发过程中,采用B/S架构,主......
  • 影城管理系统-计算机毕业设计源码+LW文档
    摘 要随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多生活之中,随之就产生了“小徐影城管理系统”,这样就让小徐影城管理系统更加方便简单。对于本小徐影城管理系统的设计来说,系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据......
  • 学科竞赛管理系统-计算机毕业设计源码+LW文档
    摘要随着国家教育体制的改革,全国各地举办的竞赛活动数目也是逐年增加,面对如此大的数目的竞赛信息,传统竞赛管理方式已经无法满足需求,为了提高效率,竞赛管理系统应运而生。 本学科竞赛管理系统以实际运用为开发背景,基于SpringBoot框架、Vue框架,运用了Java语言和MYSQL数据库进行开......
  • 2023-2024 20231313《计算机基础与程序设计》第十二周学习总结
    2023-202420231313《计算机基础与程序设计》第十二周学习总结作业速达作业课程班级链接作业要求计算机基础与程序设计第十二周学习总结作业内容《C语言程序设计》第11章并完成云班课测试作业正文我的作业目录教材总结总结学习过程中的问题《C语言程......
  • 2023-2024-1 20231320 《计算机基础与程序设计》第十二周学习总结
    2023-2024-120231320《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第十二周作业)这个作业的目标<自学《C语言程序......
  • 卸载Postman?这款IDEA插件真可以!
    Postman是大家最常用的API调试工具,那么有没有一种方法可以不用手动写入接口到Postman,即可进行接口调试操作?今天给大家推荐一款IDEA插件:ApipostHelper,写完代码就可以调试接口并一键生成接口文档!而且还可以根据已有的方法帮助您快速生成url和params。更重要的是他完全免费!Apipost......
  • 当你用neovim的mason插件管理lsp config,并且配置好bash的bashls后,却没有正常工作的解
    刚开始遇到这个情况我百思不得其解,检查了neovimcheckhealth,以为是npm包管理的问题,然后删了下删了下不但没有解决还把包管理整乱了……后来发现是我没仔细看bash-language-server这个包的官方文档。。。以下是bash-language-server的官方仓库:https://github.com/bash-lsp/......