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模块模式分析
May 16 Javascript
jquery datepicker参数介绍和示例
Apr 15 Javascript
AngularJS基础知识笔记之表格
May 10 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
Sep 05 Javascript
Jquery 效果使用详解
Nov 23 Javascript
JavaScript原型及原型链终极详解
Jan 04 Javascript
原生JavaScript实现Ajax的方法
Apr 07 Javascript
Vue 2.0学习笔记之Vue中的computed属性
Oct 16 Javascript
基于Bootstrap实现城市三级联动
Nov 23 Javascript
JavaScript创建对象的常用方式总结
Aug 10 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
原生js实现的金山打字小游戏(实例代码详解)
Mar 16 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
php简单统计在线人数的方法
2016/05/10 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
Array.prototype 的泛型应用分析
2010/04/30 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
input框中的name和id的区别
2016/11/16 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
2017/01/24 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
彻底理解Python list切片原理
2017/10/27 Python
tensorflow 获取模型所有参数总和数量的方法
2018/06/14 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
Python代码太长换行的实现
2019/07/05 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
python list多级排序知识点总结
2019/10/23 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
学生就业推荐信
2013/11/13 职场文书
个人担保书范文
2014/05/20 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
2015年商场工作总结
2015/04/27 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP