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 相关文章推荐
如何在Mozilla Gecko 用Javascript加载XSL
Jan 09 Javascript
js获取div高度的代码
Aug 09 Javascript
浅析jQuery1.8的几个小变化
Dec 10 Javascript
瀑布流布局代码一例
Apr 11 Javascript
AngularJS入门教程之Hello World!
Dec 06 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
Aug 05 Javascript
Vue键盘事件用法总结
Apr 18 Javascript
node.js使用redis储存session的方法
Sep 26 Javascript
微信小程序后端(java)开发流程的详细步骤
Nov 13 Javascript
JavaScript实现省市区三级联动
Feb 13 Javascript
有趣的JavaScript隐式类型转换操作实例分析
May 02 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
Sep 10 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
php类常量的使用详解
2013/06/08 PHP
PHP 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
Laravel 5框架学习之表单验证
2015/04/08 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
python访问纯真IP数据库的代码
2011/05/19 Python
Python最基本的输入输出详解
2015/04/25 Python
Python变量作用范围实例分析
2015/07/07 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
Python实现语音识别和语音合成功能
2019/09/20 Python
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
为什么需要版本控制
2016/10/28 面试题
公司前台辞职报告
2014/01/19 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
2015年党员个人剖析材料
2014/12/18 职场文书
四大名著读书笔记
2015/06/25 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS