分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

JS 精度问题0.1+0.2=0.30000000000000004

发布时间:2023-09-06 01:08责任编辑:董明明关键词:暂无标签

这个问题有多严重,有才的外国网友直接注册了一个域名来解释这个问题。。。0.30000000000000004.com

//js 加法计算 ?//调用:accAdd(arg1,arg2) ?//返回值:arg1加arg2的精确结果 ??function accAdd(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).toFixed(2); ??} ??//js 减法计算 ?//调用:Subtr(arg1,arg2) ?//返回值:arg1减arg2的精确结果 ??function Subtr(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)); ??????//last modify by deeka ??????//动态控制精度长度 ??????n=(r1>=r2)?r1:r2; ??????return ((arg1*m-arg2*m)/m).toFixed(2); ?} ??//js 除法函数 ?//调用:accDiv(arg1,arg2) ?//返回值:arg1除以arg2的精确结果 ??function accDiv(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){} ????with(Math){ ??????r1=Number(arg1.toString().replace(".","")) ??????r2=Number(arg2.toString().replace(".","")) ??????return (r1/r2)*pow(10,t2-t1); ????} ??} ????//js 乘法函数 ?//调用:accMul(arg1,arg2) ??//返回值:arg1乘以arg2的精确结果 ??function accMul(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) ??}

JS 精度问题0.1+0.2=0.30000000000000004

原文地址:http://www.cnblogs.com/CryOnMyShoulder/p/7798106.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved