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 数组的 uniq 方法
Jan 23 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
Apr 12 Javascript
JS中判断JSON数据是否存在某字段的方法
Mar 07 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
Jul 01 Javascript
使用jQuery获取data-的自定义属性
Nov 10 Javascript
Bootstrap每天必学之导航条
Nov 27 Javascript
js实现不重复导入的方法
Mar 02 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
Jun 10 Javascript
bootstrap table小案例
Oct 21 Javascript
Bootstrap输入框组件简单实现代码
Mar 06 Javascript
微信小程序WebSocket实现聊天对话功能
Jul 06 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
Feb 26 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
php5 non-thread-safe和thread-safe这两个版本的区别分析
2010/03/13 PHP
php单例模式实现(对象只被创建一次)
2012/12/05 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
php强制下载文件函数
2016/08/24 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
2017/04/25 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
js取小数点后两位四种方法
2019/01/18 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
Python 初始化多维数组代码
2008/09/06 Python
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
python验证码识别的实例详解
2016/09/09 Python
Django接受前端数据的几种方法总结
2016/11/04 Python
Python 调用Java实例详解
2017/06/02 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
python opencv实现证件照换底功能
2019/08/19 Python
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
机电专业毕业生推荐信
2013/11/10 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
Python Socket编程详解
2021/04/25 Python
使用php的mail()函数实现发送邮件功能
2021/06/03 PHP