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 相关文章推荐
jquery.messager.js插件导致页面抖动的解决方法
Jul 14 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
Jun 24 Javascript
seajs模块之间依赖的加载以及模块的执行
Oct 21 Javascript
jQuery使用ajax_动力节点Java学院整理
Jul 05 jQuery
详解webpack + react + react-router 如何实现懒加载
Nov 20 Javascript
微信小程序实现鼠标拖动效果示例
Dec 01 Javascript
移动前端图片压缩上传的实例
Dec 06 Javascript
element-ui组件table实现自定义筛选功能的示例代码
Mar 15 Javascript
vue响应式系统之observe、watcher、dep的源码解析
Apr 09 Javascript
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
jQuery实现可编辑的表格
Dec 11 jQuery
详解TypeScript的基础类型
Feb 18 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
PHP 简单日历实现代码
2009/10/28 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
yii操作cookie实例简介
2014/07/09 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
three.js实现3D视野缩放效果
2017/11/16 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
python自动发送邮件脚本
2018/06/20 Python
TensorFlow实现Logistic回归
2018/09/07 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
Django中间件基础用法详解
2019/07/18 Python
pandas如何处理缺失值
2019/07/31 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
Python3.9新特性详解
2020/10/10 Python
英国最大的独立家具零售商:Furniture Village
2016/09/06 全球购物
不打扫卫生检讨书
2014/02/12 职场文书
安全生产活动月方案
2014/03/09 职场文书
企业法人代表任命书
2014/06/06 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python