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 相关文章推荐
Google排名中的10个最著名的 JavaScript库
Apr 27 Javascript
用js获取电脑信息(是使用与IE浏览器)
Jan 15 Javascript
jquery三个关闭弹出层的小示例
Nov 05 Javascript
全面了解函数声明与函数表达式、变量提升
Aug 09 Javascript
jQuery弹出遮罩层效果完整示例
Sep 13 Javascript
简单谈谈JS中的正则表达式
Sep 11 Javascript
利用Vue2.x开发实现JSON树的方法
Jan 04 Javascript
Vue Promise的axios请求封装详解
Aug 13 Javascript
详解javascript appendChild()的完整功能
Aug 18 Javascript
JavaScript之解构赋值的理解
Jan 30 Javascript
微信小程序云开发 搭建一个管理小程序
May 17 Javascript
详解wepy开发小程序踩过的坑(小结)
May 22 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处理整数函数的详解
2013/06/09 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
JavaScript 动态改变图片大小
2009/06/11 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
python对字典进行排序实例
2014/09/25 Python
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
python实现逻辑回归的方法示例
2017/05/02 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
家居设计专业个人自荐信范文
2013/11/26 职场文书
初三化学教学反思
2014/01/23 职场文书
女儿十岁生日答谢词
2014/01/27 职场文书
中药专业自荐信范文
2014/03/18 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
公务员年度个人总结
2015/02/12 职场文书
民间借贷借条范本
2015/05/25 职场文书
2016年全国爱牙日宣传活动总结
2016/04/05 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python