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获得CheckBoxList选中的数量
Oct 27 Javascript
16个最流行的JavaScript框架[推荐]
May 29 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
Oct 26 Javascript
JQuery datepicker 用法详解
Dec 25 Javascript
莱鸟介绍window.print()方法
Jan 06 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
Feb 25 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
Sep 18 Javascript
js实现点击每个li节点,都弹出其文本值及修改
Dec 15 Javascript
Javascript前端经典的面试题及答案
Mar 14 Javascript
Vue中对拿到的数据进行A-Z排序的实例
Sep 25 Javascript
ES7之Async/await的使用详解
Mar 28 Javascript
原生js实现贪食蛇小游戏的思路详解
Nov 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
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
javascript基本语法分析说明
2008/06/15 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
python 按不同维度求和,最值,均值的实例
2018/06/28 Python
python 搜索大文件的实例代码
2019/07/08 Python
python 实现生成均匀分布的点
2019/12/05 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
CSS3实现swap交换动画
2016/01/19 HTML / CSS
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
外语系毕业生自荐信范文
2013/12/16 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
大学新生军训感言
2014/02/25 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
团支部建设方案
2014/05/02 职场文书
优秀员工演讲稿
2014/05/19 职场文书
考试作弊检讨书
2015/01/27 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
详解Nginx 工作原理
2021/03/31 Servers
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
ipad隐藏软件app图标方法
2022/04/19 数码科技