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.AsyncBox 弹出对话框插件
Aug 29 Javascript
jquery easyui中treegrid用法的简单实例
Feb 18 Javascript
jQuery+PHP打造滑动开关效果
Dec 16 Javascript
jQuery知识点整理
Jan 30 Javascript
微信QQ的二维码登录原理js代码解析
Jun 23 Javascript
arcgis for js 修改infowindow样式的方法
Nov 02 Javascript
JavaScript表单验证的两种实现方法
Feb 11 Javascript
微信小程序页面间通信的5种方式
Mar 31 Javascript
Vue中的数据监听和数据交互案例解析
Jul 12 Javascript
Node.js创建Web、TCP服务器
Dec 05 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
微信小程序实现弹框效果
May 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
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
培养自己的php编码规范
2015/09/28 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
2015/04/30 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
python 多线程应用介绍
2012/12/19 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
python里 super类的工作原理详解
2019/06/19 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
总经理秘书工作职责
2013/12/26 职场文书
旅游项目开发策划书
2014/01/18 职场文书
作弊检讨书1000字
2014/02/01 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
股指期货心得体会
2014/09/10 职场文书
欠款证明
2015/06/24 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
Python+DeOldify实现老照片上色功能
2022/06/21 Python