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 call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
Sep 28 Javascript
javascript实现获取浏览器版本、浏览器类型
Dec 02 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
Mar 10 Javascript
JavaScript蒙板(model)功能的简单实现代码
Aug 04 Javascript
AngularJS表单详解及示例代码
Aug 17 Javascript
JavaScript 闭包详细介绍
Sep 28 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
Jan 21 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
Jul 13 Javascript
浅析node应用的timing-attack安全漏洞
Feb 28 Javascript
解决vue数组中对象属性变化页面不渲染问题
Aug 09 Javascript
vue中echarts引入中国地图的案例
Jul 28 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
Jul 28 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
数据库相关问题
2006/10/09 PHP
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
php使用cookie显示用户上次访问网站日期的方法
2015/01/26 PHP
php数组转成json格式的方法
2015/03/09 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
JS批量操作CSS属性详细解析
2013/12/16 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
Python代码的打包与发布详解
2014/07/30 Python
在Django中创建动态视图的教程
2015/07/15 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
Django实现文件上传下载功能
2019/10/06 Python
python实现电子词典
2020/03/03 Python
在python中使用nohup命令说明
2020/04/16 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
静态变量和实例变量的区别
2015/07/07 面试题
贷款委托书
2014/08/01 职场文书
医德考评自我评价
2014/09/14 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
2016干部作风整顿心得体会
2016/01/22 职场文书
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技
详解CSS3浏览器兼容
2022/12/24 HTML / CSS