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 相关文章推荐
document.forms[].submit()使用介绍
Feb 19 Javascript
JavaScript实现定时隐藏与显示图片的方法
Aug 06 Javascript
javascript回到顶部特效
Jul 30 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
Mar 21 Javascript
Vue2.0 v-for filter列表过滤功能的实现
Sep 07 Javascript
Vue监听事件实现计数点击依次增加的方法
Sep 26 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
Aug 17 Javascript
express框架中使用jwt实现验证的方法
Aug 25 Javascript
layui多图上传实现删除功能的例子
Sep 23 Javascript
Vue 使用beforeEach实现登录状态检查功能
Oct 31 Javascript
关于vue 项目中浏览器跨域的配置问题
Nov 10 Javascript
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
Mar 17 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+SqlServer实现分页显示
2006/10/09 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
2016/02/29 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
javascript中join方法实例讲解
2019/02/21 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
JAVA和C++的区别
2013/10/06 面试题
西式婚礼主持词
2014/03/13 职场文书
个人存款证明书
2014/10/18 职场文书
先进集体申报材料
2014/12/25 职场文书
工程部主管岗位职责
2015/02/12 职场文书
小学运动会宣传稿
2015/07/23 职场文书
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers