前端 js JavaScript 加 减 乘 除 高精度计算 uniapp

解决“0.1 + 0.2 = 0.30000000000000004” - uniapp中JS浮点运算精度问题 - uniapp引入decimal.js、math.js等数学库 运算很准.jpg【js】小数浮点数计算不准确问题 - 三行代码 - 博客园1)uniapp项目引入decimal.js2)在页面中使用数学库方法进行运算 uniapp使用decimal.js处理js的加减乘除的计算精度问题 - 赵永强 - 博客园npm i decimal.js import { Decimal } from 'decimal.js';//引入 let num1 = 351921.8; let num2 = 3https://www.cnblogs.com/xiaozhua 阅读详情

JavaScript算法加减乘除

我是在uniapp内使用的,如果你用在别的地方,记得摘除uniapp的写法,保留javascript写法即可

除法函数

//除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:div(arg1,arg2)
//返回值:arg1除以arg2的精确结果
export function div(arg1, arg2) {
  var t1 = 0,
    t2 = 0,
    r1,
    r2;
  try {
    t1 = arg1.toString().split(".")[1].length;
  } catch (e) {
    t1 = 0;
  }
  try {
    t2 = arg2.toString().split(".")[1].length;
  } catch (e) {
    t2 = 0;
  }
  r1 = Number(arg1.toString().replace(".", ""));
  r2 = Number(arg2.toString().replace(".", ""));
  return mul(r1 / r2, Math.pow(10, t2 - t1));
}

乘法函数

//乘法函数,用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:mul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
export function mul(arg1, arg2) {
  var m = 0,
    s1 = arg1.toString(),
    s2 = arg2.toString();
  try {
    m += s1.split(".")[1].length;
  } catch (e) {
    m = 0;
  }
  try {
    m += s2.split(".")[1].length;
  } catch (e) {
    m = m || 0;
  }
  return (
    (Number(s1.replace(".", "")) * Number(s2.replace(".", ""))) /
    Math.pow(10, m)
  );
}

加法函数

//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:add(arg1,arg2)
//返回值:arg1加上arg2的精确结果
export function add(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));
  n = r1 >= r2 ? r1 : r2;
  return ((arg1 * m + arg2 * m) / m).toFixed(n);
}

减法函数

//减法函数,用来得到精确的减法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:sub(arg1,arg2)
//返回值:arg1减去arg2的精确结果
export function sub(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));
  //动态控制精度长度
  n = r1 >= r2 ? r1 : r2;
  return ((arg1 * m - arg2 * m) / m).toFixed(n);
}

uni使用方法

function Compute(value) {
  this.value = value;
}
Object.assign(Compute.prototype, {
  add(v) {
    this.value = add(this.value, v);
    return this;
  },
  sub(v) {
    this.value = sub(this.value, v);
    return this;
  },
  div(v) {
    this.value = div(this.value, v);
    return this;
  },
  mul(v) {
    this.value = mul(this.value, v);
    return this;
  }
});

export default function(value) {
  return new Compute(value);
}

以上所有代码为uniapp封装,是一个文件

uniapp引用(使用时)

import { div,mul,add,sub } from "@/文件地址";
uniapp电商应用中浮点数精度陷阱与实战解决方案 本文深入剖析了在uniapp电商应用开发中,JavaScript浮点数精度问题导致的购物车结算金额错误等典型陷阱。通过引入decimal.js库进行精确计算,提供了完整的工具类封装、购物车与订单计算重构方案,并探讨了性能优化、多端兼容性及前后端数据交互规范,为开发者提供了一套实战解决方案。 阅读详情

相关推荐

金融工具应用开发:Vant-UI与Uniapp跨端实践

前端开发在现代金融应用中扮演着关键角色,通过组件化架构和跨端技术实现高效开发。Vant-UI作为流行的移动端组件库,提供了丰富的表单交互组件,特别适合金融类应用场景。Uniapp框架则解决了多端适配的难题,通过条件编译实现一套代码多端运行。本文以实际项目为例,展示了如何结合微信小程序原生能力和跨端框架,开发包含基金检索、涨跌幅计算等核心功能的金融工具应用。项目中采用了模块化设计、数据分页加载等优化手段,并解决了金融计算精度、包体积控制等典型问题。

weixin_42535461的博客 267

uniapp 小程序 H5 app 价格计算 避免精度丢失

uniapp 小程序 H5 app 价格计算 避免精度丢失

weixin_45563734的博客 740

不止于登录:用UniApp为浙政钉微应用集成埋点、适老化与JSBridge的进阶实践

本文深入探讨了UniApp在浙政钉微应用中的进阶开发实践,包括用户行为埋点分析、适老化改造和JSBridge能力扩展。通过详细的代码示例和最佳实践,帮助开发者实现精细化运营、提升用户体验和扩展应用功能,特别适合政务数字化场景下的技术需求。

weixin_30340819的博客 317

前端js正确进行加减乘除

在前端需要做浮点数的计算时,如果计算的地方很多的话,需要很精确的话,建议使用math.js这个插件库,非常好用,如果只有很少的几个计算,可以使用以下方法 math.js 下载:npm install mathjs --save main.js引用并全局注册: import * as math from 'mathjs' Vue.prototype.$math = math 使用:加减乘除:add,divide,multiply,subtract this.$math.add( <!--加数--

haoxinqing222的博客 4395

UniApp定位不准?别急着改type,试试这个WGS84转GCJ02的转换函数(附完整代码)

本文深入解析UniApp定位偏差问题,提供高效的WGS84转GCJ02坐标系转换方案,帮助开发者解决Android与iOS设备定位不准的难题。通过优化算法和完整代码示例,显著提升定位精度,适用于各类地图服务集成。

weixin_29185199的博客 229

uniapp定位权限全解析:从授权检测到多端兼容实战

在移动应用开发中,位置服务是实现LBS(基于位置服务)功能的核心。其原理是通过调用设备GPS、网络或传感器获取地理坐标,涉及用户隐私与系统权限管理。这项技术的价值在于连接虚拟应用与物理世界,为电商、社交、运动健康等场景提供精准的个性化服务。在实际工程中,开发者常面临权限状态动态管理、多端API差异等挑战。本文以uniapp开发框架为例,深入剖析了定位授权的完整流程,涵盖了权限状态机、错误码处理、预检测策略等关键实践,并针对微信小程序、App等多端环境提供了兼容性解决方案与性能优化建议,帮助开发者构建健壮、合

weixin_30596165的博客 457

两数相除(简单实现)

题目 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2 示例 : 输入: dividend = 10, divisor = 3 输出: 3 解释: 10/3 = truncate(3.33333…) = truncate(3)

weixin_43857345的博客 7699

JavaScript - math.js 数学库,实现 math.add() “数字累加“ 计算总和的操作(例如:循环 N 个整数或小数,然后再循环内 “+=“ 叠加算数)适用于Vue等全部前端项目

vue.js/uniapp/nuxt.js/react.js使用math.js数学库,math.add()怎么把多个数字进行累加计算综合,vuemath.js库如何实现一些小数或整数加在一起,math.jsmath.add()怎么进行数字的叠加累加,vuemath.add()计算多个整数的总和,math.add()计算一堆小数累加在一起的结果,uniappmath.js数学库,实现math.add()数字累加,math.add()如何将数组内的数字进行相加叠加,J

🏆 前端领域优质创作者 4014

JS浮点运算翻车实录:我是如何在uniapp项目中被0.1+0.2坑惨的

本文详细记录了在uniapp项目中遇到的JS浮点运算精度问题,特别是0.1+0.2不等于0.3的经典案例。通过分析问题根源、对比多种解决方案,最终选择decimal.js数学库进行工程化实践,并总结了金融计算的最佳实践和uniapp特定建议,帮助开发者避免类似陷阱。

wdx012345的博客 916

uniapp如何解决前端js定时器在后台暂停挂起的问题?及问题原因

当uniap应用进入后台后,浏览器或基于 WebView 的框架会对定时器进行限制,导致它们被挂起。这种方法结合了定时器和系统时间来补偿后台挂起的影响。通过记录任务开始时的时间戳,结合定时器触发时的当前时间计算实际经过的时间。是 H5 提供的高精度时间 API,它返回自页面加载以来的时间(以毫秒为单位),且不受系统时间修改的影响。浏览器或 WebView 在应用进入后台时,为了节省资源和电量,会对定时器的执行进行限制。对于动画或视图变化类任务,后台运行没有意义,可以在程序进入后台时主动停止,回到前台时恢复。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1080

uniapp实现计算器功能

使用uniapp进行简单移动开发

uniapp集成腾讯地图实现精准定位与多目标距离批量计算方案

本文详细介绍了如何在uniapp中集成腾讯地图SDK,实现精准定位与多目标距离批量计算功能。通过实战案例分享,包括SDK配置、高精度定位实现、批量距离计算优化等关键步骤,帮助开发者快速解决物流配送、社区团购等场景下的位置服务需求。

h0i1j2k3l的博客 747

open-mmlab / mmpose安装、使用教程

mmpose安装、使用教程mmpose安装教程1. 安装mmcv-full2. 安装MMPose2. 安装mmdet使用教程1. 预测图片2. 预测视频 mmpose mmpose是商汤旗下有又一款好用的工具箱,主要是针对姿态识别任务开发的,包括人体姿态识别和动物姿态识别。里面继承很多现成的网络可以供大家使用,并且提供了训练好的权重。用户可以更具自己的需求训练自己的数据,或者直接应用他们的结果,反正就是很全面啦!!!! github连接:https://github.com/open-mmlab/mmpos

CharmsLUO的博客 1万+

vue+uniapp+Python 微信小程序交通事故快速处理汽车 理赔

Vue.js 作为前端框架,结合 Uniapp 实现跨平台开发(微信小程序、H5 等),后端采用 Python 搭建服务端逻辑,实现交通事故快速处理与汽车理赔流程的数字化。

懒人的博客 761

STM32串口通信实战:从CubeMX配置到printf重定向全解析

串口通信是嵌入式系统中最基础且广泛使用的数据交换方式,它基于异步串行通信原理,通过TX(发送)和RX(接收)两根信号线实现设备间的全双工通信。其技术价值在于协议简单、硬件成本低、可靠性高,是单片机与上位机调试、传感器数据采集、设备控制等场景的首选方案。在STM32等ARM Cortex-M系列MCU中,USART外设通过硬件自动处理时序,大大减轻了CPU负担。本文聚焦于嵌入式竞赛与开发中的高频需求,以STM32G431RBT6为例,详解通过CubeMX配置USART1、实现按键触发数据发送、并完成print

weixin_30603633的博客 545

SAE J1850协议:从波形解析到汽车诊断实战

本文深入解析SAE J1850协议在汽车诊断中的应用,重点对比其PWM和VPW两种实现方式的波形特征、帧结构及诊断要点。通过实测案例,详细介绍了如何通过波形分析精准定位通用和福特等美系车型的通信故障,提升汽车电子诊断实战能力。

hill8的博客 965

从零到一:UniApp与腾讯地图的定位与距离计算实战指南

本文详细介绍了UniApp与腾讯地图的深度整合方案,从基础配置到高级功能实现,涵盖精准定位、距离计算等核心功能。通过实战代码示例,帮助开发者快速掌握腾讯地图API的使用技巧,解决多平台兼容性问题,提升移动应用的位置服务体验。重点讲解了经纬度转换、智能距离计算等关键技术点。

grafana8visual的博客 87

windows 下AD9361的 no-os master 工程搭建

参考网站: https://wiki.analog.com/resources/fpga/docs/build#windows_environment_setup https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/software/no-os-setup 参考博客: https://blog.youkuaiyun.com...

Bronceyang的博客 7292

UniApp多端测试实战:从模拟器到真机的完整链路与避坑指南

跨端开发框架通过一套代码实现多平台部署,其核心挑战在于确保应用在不同运行环境下的稳定性和一致性。这涉及到对编译原理、各平台渲染引擎差异以及原生API调用的深入理解。有效的测试策略能显著提升开发效率与产品质量,其技术价值在于提前发现并修复环境兼容性问题,避免线上故障。在实际工程中,测试通常覆盖模拟器快速验证、小程序端特性测试以及真机环境终极检验等多个场景。本文聚焦于UniApp开发,针对其多端发布特性,详细拆解了模拟器测试、微信小程序真机调试以及App端真机测试的完整操作链路。文中特别融入了对“uni.nav

weixin_33696106的博客 342

HALCON 20.11实战:5步搞定工业图像异常检测(附完整代码)

本文提供了一份基于HALCON 20.11的工业图像异常检测实战指南。通过五个核心步骤——环境准备、数据预处理、模型训练、推理解析与工程化部署,详细演示了如何利用深度学习技术,仅使用正常样本快速构建并优化金属表面划痕等缺陷的检测模型,并附有完整可运行的HDevelop代码,助力工程师实现高效、智能的工业视觉质检。

weixin_29243279的博客 140

PMSM控制系列文章进阶-8.电流、角度采样及其同步

摘要:本文分析了高低压电机在电流和角度采样中的不同方案选择。高压电机采用霍尔传感器和旋变进行隔离采样,低压电机则使用shunt电阻和磁编码器以降低成本。重点讨论了采样时间补偿问题:电流采样需与PWM周期同步,角度采样需考虑传感器延迟;通过park变换和反park变换时需补偿采样与发波的时间差,提出了通过测试母线电流或Ud变化来验证补偿时间准确性的方法。文中还介绍了对传感器信号进行软解码处理的方法,包括消除直流偏置、增益误差和正交误差等参数的自学习过程。

weixin_41343701的博客 613

一套基于Java+Vue+UniApp开发的同城配送系统

本文提出基于Java+Vue+UniApp技术栈的同城配送系统解决方案,采用SpringBoot+SpringCloudAlibaba微服务架构,结合MySQL+Redis数据存储,实现订单智能分配、实时配送追踪等功能。系统通过UniApp实现多端适配,利用算法优化提升30%配送效率,日均处理10万单且准时率达98.5%。创新性地采用多级缓存、读写分离等技术保障系统性能,未来计划引入AI智能调度。该方案为同城配送数字化提供了可扩展、高性能的技术范本。

2501_93276925的博客 450

VMware Horizon 8 2111 部署系列(十一)准备RDS主机

RDS (Remote Desktop Service),即远程桌面服务。我们可以使用 Microsoft 远程桌面服务 (RDS) 提供 RDS 主机上的桌面会话并将应用程序传送给多个用户。

白昼的技术专栏 3470

uni-app原生插件开发实战:从Java代码到aar集成全流程详解

在跨平台应用开发中,混合开发技术是连接Web前端与原生系统能力的关键桥梁。其核心原理是通过JavaScript桥接机制,实现JavaScript与原生语言(如Java/Kotlin)之间的双向通信,从而突破Web沙箱限制,访问设备硬件与底层API。这项技术的核心价值在于,它允许开发者使用统一的Web技术栈开发应用主体,同时在需要高性能或特定硬件功能时,无缝调用原生模块,极大地平衡了开发效率与应用能力。典型的应用场景包括蓝牙打印、NFC读写、高精度定位以及集成第三方硬件SDK等。本文将以uni-app框架为例

weixin_34007906的博客 337

【skill】漫剧 AI 视频创作的知识库 + API 调用手册

方案适用场景在对话中使用,自动触发注入到任何 LLM(Cursor/Windsurf/Claude API)Python 模块集成到自动化管线/批量生成GitHub 又限速了,不过前几轮搜到的已经够用了。根据搜索结果,结合已分析过的项目,给你整理完整对比 🐮。

突围 984

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Uniapp视频处理新姿势:RenderJS在Vue3中的高效应用指南

本文深入探讨了在Uniapp项目中,如何利用RenderJS结合Vue3的Composition API,实现高性能的客户端视频处理。重点解析了RenderJS在视频切图、逐帧分析等场景下的高效应用,提供了从环境搭建、核心原理到内存优化与Web Worker并行计算等高级实战技巧,旨在帮助开发者构建流畅、专业的跨平台视频处理功能。

weixin_29001423的博客 134

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 正则表达式 js javascript 验证各种格式校验 前端常用 uniapp
dalongee
博客等级 码龄8年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值