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语句中的CDATA标签的意义
May 09 Javascript
jquery cookie插件代码类
May 26 Javascript
bootstrap table 服务器端分页例子分享
Feb 10 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
Nov 30 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
Dec 22 Javascript
webpack入门必知必会
Jan 16 Javascript
Vue计算属性的使用
Aug 04 Javascript
VueJs 搭建Axios接口请求工具
Nov 20 Javascript
微信小程序实现tab左右切换效果
Nov 15 Javascript
Vue 实现手动刷新组件的方法
Feb 19 Javascript
JavaScript逻辑运算符相关总结
Sep 04 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
Nov 02 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中通过curl smtp发送邮件
2012/06/05 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
php之可变函数的实例详解
2017/09/13 PHP
将json对象转换为字符串的方法
2014/02/20 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
Vue指令指令大全
2019/02/09 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
微信小程序反编译的实现
2020/12/10 Javascript
windows下安装python paramiko模块的代码
2013/02/10 Python
netbeans7安装python插件的方法图解
2013/12/24 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
UNIX文件名称有什么规定
2013/03/25 面试题
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
python编写函数注意事项总结
2021/03/29 Python
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python
CSS极坐标的实例代码
2021/06/03 HTML / CSS
php去除数组中为0的元素的实例分析
2021/11/17 PHP