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 相关文章推荐
为数据添加append,remove功能
Oct 03 Javascript
利用腾讯的ip地址库做ip物理地址定位
Jul 24 Javascript
jQuery 选择同时包含两个class的元素的实现方法
Jun 01 Javascript
JS中sort函数排序用法实例分析
Jun 16 Javascript
大型JavaScript应用程序架构设计模式
Jun 29 Javascript
浅析BootStrap Treeview的简单使用
Oct 12 Javascript
Vue2.0结合webuploader实现文件分片上传功能
Mar 09 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
Dec 03 Javascript
使用Node.js实现base64和png文件相互转换的方法
Mar 11 Javascript
Node.js API详解之 console模块用法详解
May 12 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
Java无向树分析 实现最小高度树
Apr 09 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
提取HTML标签
2006/10/09 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
php自定义session示例分享
2014/04/22 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
微信小程序使用component自定义toast弹窗效果
2018/11/27 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
在Django中使用Sitemap的方法讲解
2015/07/22 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
Python 串口读写的实现方法
2019/06/12 Python
python实现双色球随机选号
2020/01/01 Python
如何使用Python调整图像大小
2020/09/26 Python
Python创建自己的加密货币的示例
2021/03/01 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
社团成立邀请函
2014/01/08 职场文书
2014年资料员工作总结
2014/11/18 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript
python解析照片拍摄时间进行图片整理
2022/07/23 Python