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 相关文章推荐
window.onbeforeunload方法在IE下无法正常工作的解决办法
Jan 23 Javascript
javascript函数作用域学习示例(js作用域)
Jan 13 Javascript
7个JS基础知识总结
Mar 05 Javascript
如何通过js实现图片预览功能【附实例代码】
Mar 30 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
Mar 09 Javascript
原生JS实现导航下拉菜单效果
Nov 25 Javascript
Javascript实现base64的加密解密方法示例
Jun 27 Javascript
vue页面使用阿里oss上传功能的实例(一)
Aug 09 Javascript
bootstrap3-dialog-master模态框使用详解
Aug 22 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
Jan 02 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
Apr 26 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
Dec 13 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
PHP实现多条件查询实例代码
2010/07/17 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
微信小程序进入广告实现代码实例
2019/09/19 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
利用python程序帮大家清理windows垃圾
2017/01/15 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
python global关键字的用法详解
2019/09/05 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
html+js 实现markdown编辑器效果
2019/10/23 HTML / CSS
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
获奖的大学生创业计划书
2014/01/05 职场文书
安全环保标语
2014/06/09 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android