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 相关文章推荐
实现连缀调用的map方法(prototype)
Aug 05 Javascript
JavaScript中Object和Function的关系小结
Sep 26 Javascript
一个简单的网站访问JS计数器 刷新1次加1次访问
Sep 20 Javascript
Javascript在IE和FireFox中的不同表现简析
Dec 03 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
Jul 04 Javascript
js匿名函数的调用示例(形式多种多样)
Aug 20 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
Sep 05 Javascript
Vue.js实现图片的随意拖动方法
Mar 08 Javascript
Node批量爬取头条视频并保存方法
Sep 20 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
Nov 28 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
Apr 11 Javascript
layui--select使用以及下拉框实现键盘选择的例子
Sep 24 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
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
smarty的保留变量问题
2008/10/23 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
python使用tornado实现登录和登出
2018/07/28 Python
python学习开发mock接口
2019/04/28 Python
Python实现Linux监控的方法
2019/05/16 Python
python解析xml简单示例
2019/06/21 Python
Python实现FTP文件传输的实例
2019/07/07 Python
python中with用法讲解
2020/02/07 Python
python isinstance函数用法详解
2020/02/13 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
少先队入队活动方案
2014/02/08 职场文书
小学中等生评语
2014/12/29 职场文书
虎兄虎弟观后感
2015/06/12 职场文书
ICOM R71E和R72E图文对比解说
2022/04/07 无线电