@H_3010@

原因:js按照2进制来处理小数的加减乘除,在arg1的基础上 将arg2的精度进行扩展或逆扩展匹配,所以会出现如下情况.

@H301_0@javascript(js)的小数点加减乘除问题,是一个js的bug如0.31 = 0.2999999999等,下面列出可以完美求出相应精度的四种js算法

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 accMul((r1/r2),pow(10,t2-t1));

}

} / 何问起 hovertree.com /

//乘法

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)

}

//加法

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 (arg1m+arg2m)/m

}

//减法

function Subtr(arg1,arg2){

var r1,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,r2));

n=(r1>=r2)?r1:r2;

return ((arg1m-arg2m)/m).toFixed(n);

}

PHP怎样防止小数点精度不丢失,javascript小数精度丢失的完美解决方法相关推荐

  1. JavaScript中的回调地狱及解决方法

    JavaScript中的回调地狱及解决方法 1.回调地狱 在使用JavaScript时,为了实现某些逻辑经常会写出层层嵌套的回调函数,如果嵌套过多,会极大影响代码可读性和逻辑,这种情况也被成为回调地狱 ...

  2. JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题的解决方法

    JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题的解决方法 参考文章: (1)JS IOS/iPhone的Safari浏览器不兼容Javascript中的D ...

  3. OpenCV 无法启动此程序,因为计算机中丢失opencv_core249.dll(类似的),解决方法

    OpenCV 无法启动此程序,因为计算机中丢失opencv_core249.dll(类似的),解决方法 解决方法就是在当前运行代码文件目录下加入opencv对应缺失的dll 这样就运行代码就没有提示缺 ...

  4. python小数精度_python.day.02——小数精度控制问题

    总结一下小数精度的处理问题 一.round()函数内置方法 round(number,[ndigits]):round 对传入的数据进行四舍五入,但并不是传统意义上的四舍五入.number:需要被处理 ...

  5. 电脑桌面的word文件丢失了怎么找回?7个解决方法!

    word作为日常办公的文字处理软件,能够满足用户的各种文档处理需求,而在电脑长期使用过程中,难免会因为各种原因导致word文件丢失,那么电脑桌面的word文件丢失了怎么找回呢?针对用户的这个疑惑,下面 ...

  6. signature=0e936ad5c99bd8d603e71fa74e787bee,JavaScript 的 BASE64 算法 实现 完美解决中文乱码...

    收藏的Base64编码/解码.在一个外国网站看到的.不过对中文不支持. 自己加入了escape,.对中文也支持了. 先用escape()对中文进行编码.然后再进行base64编码. 解码时,再加入() ...

  7. ajax 请求成功 再执行javascript,jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法...

    jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Objec ...

  8. 升级Win11后Win安全中心丢失或者点击没反应的解决方法

    当电脑操作系统由Windows10升级Windows11系统后,不少用户发现Windows11中的安全中心消失了,或者应为安装其他杀毒软件后卸载不干净导致Windows11安全中心点击后没有反应打不开 ...

  9. 因为计算机中丢失d3dx96,视频软件edius常见问题的解决方法

    2.installer is running 答:安装程序正在运行 3.安装的时候出现:error:#13001 system error 答:用360清理注册表信息,建议你打开开始菜单,在框里输入 ...

最新文章

  1. android widget 研究 (转载)
  2. 学python的前提_Python语言学习前提:条件语句
  3. 大数据 -- kafka学习笔记:知识点整理(部分转载)
  4. mysql 学习笔记13 查询语句强化
  5. python依赖注入_什么是依赖注入?
  6. php网站https怎么做301,php网站如何增加https安全访问
  7. SpringBoot POM 热部署(spring-boot-devtools)
  8. 随机生成关于银行卡号的字典(卡号以6102009开头,后面依次是001,002,...)
  9. java 数组对象属性数组_Java中数组的特性
  10. QT5.9 for 安卓开发 环境配置
  11. 计算机图像处理入门基础知识——色域,色度图,色彩空间和色彩管理
  12. 微信小程序引入UI组件库
  13. WordPress导航主题/酷啦鱼导航主题模板
  14. powerdesign新手入门详细教程
  15. leapftp 3.0.1使用教程,leapftp 3.0.1使用教程图解
  16. 专门查英语单词的软件_有什么软件可以查英语单词
  17. JavaCV音视频开发宝典:录制vp8和vp9编码的webm格式视频,以mp4转webm为例
  18. Linux共享后无权限访问,Samba服务无权限访问
  19. 程序猿、工程师如何快速高效使用MAC电脑技巧、常用快捷键汇总
  20. 仿照京东导航条html+css

热门文章

  1. Building wheel for wrapt (setup.py) ... error的解决办法(图文)
  2. python 判断是否是润年及函数封装的2种方法
  3. Python3 多线程的两种实现方式
  4. include 路由 php,PHP简单路由
  5. 三星.android beam,三星S Beam取代Android Beam
  6. android studil打断点_【小技巧】AndroidStudio利用断点打印日志
  7. 什么是标准输入,标准输出(stdin,stdout)
  8. C++内联 inline的用法
  9. pycharm如何调试函数中的断点?找出操作对应的代码部分
  10. pygame的学习以及python的巩固(窗口尺寸的显示)