今天遇到一个线上生产问题,据运维人员反馈,在某界面进行计算的时候,结果出现了一个值为-0.00,本来应该是0.00,遂去查了一下问题,js前端大致代码如下:

var x=Number(document.getElementById('x').value);var y=Number(document.getElementById('y').value);var z=Number(document.getElementById('z').value);var result=document.getElementById('result');result.value=(x-y-z).toFixed(2);    

当然代码没这么简单,我随便写了一段案例,也就是一个数,减去另外两个数,然后查了一下数据库获取到三个值分别为2048.04、1595.21、452.83,所以本应该是:
2048.04-1595.21-452.83=0,但结果差强人意,界面显示却是-0.00

因为计算的是跟钱相关的金额,再看使用的是number类型,所以看到这里大致猜想是丢失精度导致,因此写一个案例测试一下

<!DOCTYPE html>
<html><head> <meta charset="UTF-8" /> <title></title> <script>function cal(tty){var x=Number(document.getElementById('x').value);var y=Number(document.getElementById('y').value);var z=Number(document.getElementById('z').value);var result=document.getElementById('result');result.value=(x-y-z).toFixed(2);    }</script> </head> <body> <form> <br /> 第一个数: <input type="text" id="x" value="0.3" /> <br /> 第二个数: <input type="text" id="z" value="0.2" /> <br /> 第三个数: <input type="text" id="y" value="0.1" /> <br /> 计算结果: <input id="result" type="text" /> <br /> <button type="button" id="tty" value="-" onclick="cal(this)">-</button> </form>  </body>
</html>

查看结果返回-0.00

因此需要做出改造,可以引入decimal.js来实现,可以直接在gitee下载

decimal.js下载

<!DOCTYPE html>
<html><head> <meta charset="UTF-8" /> <title></title> <script type="text/javascript" src="decimal.js"></script> <script>function cal(tty){var x=Number(document.getElementById('x').value);var y=Number(document.getElementById('y').value);var z=Number(document.getElementById('z').value);var result=document.getElementById('result');var decimalTest=new Decimal(x).sub(new Decimal(y)).sub(new Decimal(z));result.value=decimalTest.toFixed(2);    }
</script> </head> <body> <form> <br /> 第一个数: <input type="text" id="x" value="0.3" /> <br /> 第二个数: <input type="text" id="z" value="0.2" /> <br /> 第三个数: <input type="text" id="y" value="0.1" /> <br /> 计算结果: <input id="result" type="text" /> <br /> <button type="button" id="tty" value="-" onclick="cal(this)">-</button> </form>  </body>
</html>

结果反正正常数据

JS toFixed(2) 返回 -0.00相关推荐

  1. JS toFixed的使用误差,银行家算法(四舍六入五取偶)实现

    JS toFixed的使用误差,银行家算法(四舍六入五取偶)实现 前言 toFixed方法 "四舍六入五取偶" 问题 银行家算法实现 扩展 原因 解决方式 附注 前言 JS是一门弱 ...

  2. Ext JS的4.1.0的RC 1的发行说明

    Ext JS的 - JavaScript框架 Ext JS的4.1.0的RC 1的发行说明 发行日期:2012年3月13, 版本号:4.1.0的RC 1 修正的错误 钮 EXTJSIV-5129 按钮 ...

  3. Linux 0.00 代码解析(一)

    <Linux内核完全剖析>这本书在第4章给出了一个简单多任务内核示例程序,作者称之为Linux 0.00系统. 源码的下载地址和实验方法可以参考我的博文 http://blog.csdn. ...

  4. java 怎么判断1_1.0_1.00是同一个数_php如何优雅的判断 0.0/0.00/0.000 是否为空? 测试过用empty函数不行...

    php如何优雅的判断 0.0/0.00/0.000 是否为空? 测试过用empty函数不行 如何优雅 ? if ( (int) $number == 0) echo 'empty'; if ( flo ...

  5. 修改 decimal 默认值为0.00 sql_被经理邀请去“爬山”,只是因为我写错了一条SQL语句?...

    作者:isysc1 链接:https://juejin.im/post/5f06a2156fb9a07e5f5180df 来源:掘金 前戏 SQL 写的妙,涨薪呱呱叫! 新来的实习生小杨写了一条 SQ ...

  6. request.cookie[name]的到的过期时间是{0001-1-1 0:00:00}

    现在真正接触 cookie了. 但是跟踪发现request的cookie过期时间总是 {0001-1-1 0:00:00} HttpCookie ck = Request.Cookies[" ...

  7. JavaScript中的ParseInt(08)和“09”返回0的原因分析及解决办法

    今天在程序中出现一个bugger ,调试了好久,最后才发现,原来是这个问题. 做了一个实验: alert(parseInt("01")),当这个里面的值为01====>07时 ...

  8. Linux 0.00简单多任务内核head.s超详注释

    # head.s包含32位保护模式初始化设置代码.时钟中断代码.系统调用中断代码和两个任务的代码. # 在初始化完成之后程序移动到任务0开始执行,并在时钟中断控制下进行任务0和1之间的切换操作. LA ...

  9. js处理后端返回超过16位大数字方案

    js处理后端返回超过16位大数字方案 这个问题与这篇博客讲的问题类似.(https://blog.csdn.net/StoneVivi/article/details/105210934).这里就不具 ...

最新文章

  1. arcgis车辆轨迹动态_聪明反被聪明误 屏蔽车辆GPS被处罚
  2. 计算机c语言试题文档,c语言计算机考试试题
  3. Delphi中拖动无边框窗口的5种方法
  4. android 左移动画_Android 控件的显示隐藏上下左右移动动画
  5. 什么是51%算力攻击?——区块链系列学习笔记
  6. 18岁初中毕业学Java_刚满十八 初中毕业 java自学完了 没学历 该怎么办?
  7. 使用CoreImage教程
  8. 27. 二叉树的镜像
  9. eclipse.ini 修改默认编码为 UTF-8
  10. 多功能工具箱微信小程序源码
  11. matlab的wthcoef函数,小波去噪及其MATLAB中的函数.pdf
  12. 疯狂的程序员 兼职(下)
  13. KNEEL: Knee Anatomical Landmark Localization Using Hourglass Networks
  14. c语言中begin用法,C++ deque cbegin()用法及代码示例
  15. 计算机网上培训6,wordexcel计算机基础培训6.pptx
  16. 计算机毕业设计ssm社区爱心活动网站be83l系统+程序+源码+lw+远程部署
  17. ppt给图片增加高斯模糊_PPT图片处理小技巧
  18. 项目经验教训总结(教育软件)
  19. 计算机类优质课课件一等奖,小学信息技术《认识画图》优质课比赛课件
  20. 前端处理sku表格数据

热门文章

  1. scrollView 横向
  2. 【例题】系统中原有三类资源A、B、C和五个进程P1、P2、P3、P4、P5,A资源17,B资源5,C资源20。当前(TO时刻)系统资源分配和进程最大需求如下表。
  3. python调用OpenCV和IOSAutoTouch实现硬件级免越狱自动化
  4. PCA(主成分分析)
  5. 用 HTTPS 安全吗?HTTPS 的原理是啥?
  6. 常见WebShell客户端的流量特征及检测思路
  7. 人工智能和AI到底是什么??浅谈人工智能和AI
  8. Application.platform 平台
  9. 人机猜拳代码python_python 实现人和电脑猜拳的示例代码
  10. 什么是 NullPointerException?