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 相关文章推荐
JavaScript实现禁止后退的方法
Dec 27 Javascript
区分JS中的undefined,null,"",0和false
Mar 08 Javascript
一个简单的js鼠标划过切换效果
Jun 30 Javascript
模拟多级复选框效果的jquery代码
Aug 13 Javascript
原生Js实现简易烟花爆炸效果的方法
Mar 20 Javascript
jquery插件qrcode在线生成二维码
Apr 26 Javascript
jQuery实现文本框输入同步的方法
Jun 20 Javascript
jQuery获取select选中的option的value值实现方法
Aug 29 Javascript
浅析上传头像示例及其注意事项
Dec 14 Javascript
JS的Ajax与后端交互数据的实例
Aug 08 Javascript
JS实现的字符串数组去重功能小结
Jun 17 Javascript
前端开发基础javaScript的六大作用
Aug 06 Javascript
拥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
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
jquery ui resizable bug解决方法
2010/10/26 Javascript
菜鸟javascript基础资料整理2
2010/12/06 Javascript
js控制table合并具体实现
2014/02/20 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
javascript中new关键字详解
2015/12/14 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
javaScript中"=="和"==="的区别详解
2018/03/16 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
html5 自定义播放器核心代码
2013/12/20 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
公司离职证明范本
2014/01/13 职场文书
函授自我鉴定范文
2014/02/06 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
行政前台岗位职责
2015/04/16 职场文书
护士旷工检讨书
2015/08/15 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers