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 DOM学习第四章 getElementByTagNames
Feb 19 Javascript
浏览器脚本兼容 文本框中,回车键触发事件的兼容
Jun 21 Javascript
javascript 实现键盘上下左右功能的小例子
Sep 15 Javascript
JS表的模拟方法
Feb 05 Javascript
javascript实现右侧弹出“分享到”窗口效果
Feb 01 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
Mar 27 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
May 11 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
Jun 14 Javascript
一个简易时钟效果js实现代码
Mar 25 Javascript
element-ui table span-method(行合并)的实现代码
Dec 20 Javascript
JavaScript页面倒计时功能完整示例
May 15 Javascript
一分钟学会JavaScript中的try-catch
Dec 14 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
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
python之拟合的实现
2019/07/19 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
git查看、创建、删除、本地、远程分支方法详解
2020/02/18 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
CSS教程:CSS3圆角属性
2009/04/02 HTML / CSS
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
动员大会主持词
2014/03/20 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
2014年车间工作总结
2014/11/21 职场文书
红歌会主持词
2015/07/02 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
Nginx配置之禁止指定IP访问
2022/05/02 Servers