Javascript浮点数乘积运算出现多位小数的解决方法


Posted in Javascript onFebruary 17, 2014

Javascript在进行浮点数的乘积运算,会出现多位小数的情况。

这是由于在运算的时候先把浮点数转化成二进制后进行运算,但是有的小数在二进制编码后出现无限循环,因而导致计算出现了误差,在其它变成语言中也有类似的问题。

原因解释参考自百度知道:

例如:求1038.1-1000
1038.1=10000001110.0001100110011001100110011001100110011001100.....
1000 =1111101000

1038.1转化为二进制是个无限循环小数,1100是循环节,只能取近似值,误差就是这里产生的 如果浏览器版本高,可以用toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

解决方案:根据要保留的小数位数(如4),在计算乘积的时候先乘以(10^4),然后对计算结果除以(10^4),最后对结果取近似值Math.round

var m1 = 2232.00, 
percent = (10/100), 
total = percent*m1; 
alert(total);//223.20000000000002 total = Math.round(total*10)/10; 
alert(total);//223.2
Javascript 相关文章推荐
jQuery之浮动窗口实现代码(两种方法)
Sep 08 Javascript
基于jquery的一行代码轻松实现拖动效果
Dec 28 Javascript
window.requestAnimationFrame是什么意思,怎么用
Jan 13 Javascript
Js 冒泡事件阻止实现代码
Jan 27 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
Jul 13 Javascript
动态创建按钮的JavaScript代码
Jan 29 Javascript
jQuery简单实现仿京东分类导航层效果
Jun 07 Javascript
JS获取input file绝对路径的方法(推荐)
Aug 02 Javascript
使用bootstrap插件实现模态框效果
May 10 Javascript
浅谈如何使用 webpack 优化资源
Oct 20 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
Nov 13 Javascript
eclipse导入jquery包后报错的解决方法
Feb 17 #Javascript
jsp网页搜索结果中实现选中一行使其高亮
Feb 17 #Javascript
javascript向后台传送相同属性的参数即数组参数
Feb 17 #Javascript
jquery的ajax简单结构示例代码
Feb 17 #Javascript
toggle()隐藏问题的解决方法
Feb 17 #Javascript
Jquery获取和修改img的src值的方法
Feb 17 #Javascript
Jquery在指定DIV加载HTML示例代码
Feb 17 #Javascript
You might like
php5 non-thread-safe和thread-safe这两个版本的区别分析
2010/03/13 PHP
php数字游戏 计算24算法
2012/06/10 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
window.dialogArguments 使用说明
2011/04/11 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
Python 流程控制实例代码
2009/09/25 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
给老师的一封建议书
2014/03/13 职场文书
工程建设实施方案
2014/03/14 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
股东授权委托书范文
2014/09/13 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
带你了解CSS基础知识,样式
2021/07/21 HTML / CSS