js小数计算小数点后显示多位小数的实现方法


Posted in Javascript onMay 30, 2016

首先写一个demo 重现问题,我使用的是一个js在线测试环境[打开]

改写displaynum()函数

function displaynum(){var num = 22.77;alert(num + 10);}

点击Show按钮 结果显示32.769999999996 出现了N多小数.

也并不是所有数字都会出现这种现象, 除了 22.99  2.777 , 好像这几个数字也没什么特殊.

查了一些资料, 一是JS浮点数计算的bug, 另一个是和计算机最终转换成二进制计算有关系, 但是为什么不是所有小数都会有这种现象, 目前我也不清楚, 有时间再去深入研究一下。

现在有两种解决方法, 第一种就是利用JS .toFixed(n) 方法, 直接获取n位小数, 个人觉得这种方法在数据精度上会有一些问题. 如果数据精度要求不高的话 可以使用. 第二种方法就是自己写js 运算方法.

以下是自定义加法函数, 使用此方法进行相加会避免上面问题。

function addNum(num1,num2){var sq1,sq2,m;try{sq1=num1.toString().split(".")[1].length;} catch(e){sq1=0;}try{sq2=num2.toString().split(".")[1].length;} catch(e){sq2=0;}m=Math.pow(10,Math.max(sq1,sq2));return ( num1 * m + num2 * m ) / m;}

当然简单一点也可以写成 alert((num * 3 + 10 * 3) /3); 这样也不会出现n多小数。

alert((num * 3 + 10 * 3) /3); 与 alert(num + 10); 这两种写法计算机在底层转换成二进制运算是有区别的, 或许这就是出现上述问题的原因

以上这篇js小数计算小数点后显示多位小数的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
网页中CDATA标记的说明
Sep 12 Javascript
通过jQuery源码学习javascript(一)
Dec 27 Javascript
js获取事件源及触发该事件的对象
Oct 24 Javascript
javascript列表框操作函数集合汇总
Nov 28 Javascript
jquery简单实现图片切换效果的方法
May 12 Javascript
JavaScript学习小结(7)之JS RegExp
Nov 29 Javascript
jquery网页日历显示控件calendar3.1使用详解
Nov 24 Javascript
Javascript中字符串相关常用的使用方法总结
Mar 13 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
Aug 25 Javascript
详解Vue开发微信H5微信分享签名失败问题解决方案
Aug 09 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
Sep 01 Javascript
vue keep-alive的简单总结
Jan 25 Vue.js
拥Bootstrap入怀——导航栏篇
May 30 #Javascript
基于Bootstrap实现tab标签切换效果
Apr 15 #Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
May 30 #Javascript
Bootstrap编写导航栏和登陆框
May 30 #Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
May 30 #Javascript
Bootstrap+jfinal实现省市级联下拉菜单
May 30 #Javascript
基于Bootstrap里面的Button dropdown打造自定义select
May 30 #Javascript
You might like
我的论坛源代码(二)
2006/10/09 PHP
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
python中循环语句while用法实例
2015/05/16 Python
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
详解K-means算法在Python中的实现
2017/12/05 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
南京迈特望C/C++面试题
2012/07/09 面试题
计算机专业毕业生自我鉴定
2014/01/16 职场文书
师生聚会感言
2014/01/26 职场文书
公司中秋节活动方案
2014/02/12 职场文书
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
新年主持词
2014/03/27 职场文书
员工工作及收入证明
2014/10/28 职场文书
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技