【问题】javascript计算丢失精度解决方案

简介: 1、问题描述:两个有限的数字相减得到小数点后面类似00000000000001,69999999999999之类的数。像下面这样0.1 + 0.2没有返回0.3,反而返回0.30000000000000004。原因是因为计算机把数字转成二进制计算再将计算转成十进制的这个过程出现的计算误差。不仅仅是JavaScript会出现这个问题,其他语言也会有。不过解决思路都是一样的

1、问题描述:


两个有限的数字相减得到小数点后面类似00000000000001,69999999999999之类的数。像下面这样0.1 + 0.2没有返回0.3,反而返回0.30000000000000004。原因是因为计算机把数字转成二进制计算再将计算转成十进制的这个过程出现的计算误差。不仅仅是JavaScript会出现这个问题,其他语言也会有。不过解决思路都是一样的


0.1 + 0.2
 => 0.30000000000000004


2、问题解决


下面是用JavaScript方法解决,其他语言的解决思路都是一样的


(1)保留4位小数,小数不足4位不会用0补齐


0.1 + 0.2 
=> 0.30000000000000004
//调整成
parseInt((0.1 + 0.2)*10000)/parseInt(10000)
=> 0.3


(2)保留四舍五入后的5位小数,小数不足5位用0补齐


0.012 * 0.06
 => 0.0007199999999999999
//调整成
parseInt(0.012 * 0.06*1000000)/parseInt(1000000).toFixed(5)
=> 0.0007
目录
相关文章
|
3月前
|
JavaScript 前端开发
JS浮点数精度问题及高精度小数运算:BigNumber解决方案
JS浮点数精度问题及高精度小数运算:BigNumber解决方案
236 0
|
3月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
786 1
|
2月前
|
JavaScript 前端开发
|
4月前
|
JavaScript
js计算时间差,包括计算,天,时,分,秒
js计算时间差,包括计算,天,时,分,秒
315 16
|
2月前
|
前端开发 JavaScript 开发者
除了 Generator 函数,还有哪些 JavaScript 异步编程解决方案?
【10月更文挑战第30天】开发者可以根据具体的项目情况选择合适的方式来处理异步操作,以实现高效、可读和易于维护的代码。
|
3月前
|
前端开发 JavaScript 开发者
JS 异步解决方案的发展历程以及优缺点
本文介绍了JS异步解决方案的发展历程,从回调函数到Promise,再到Async/Await,每种方案的优缺点及应用场景,帮助开发者更好地理解和选择合适的异步处理方式。
|
3月前
|
缓存 JavaScript 前端开发
探索Vue.js中的计算属性与侦听器
【10月更文挑战第5天】探索Vue.js中的计算属性与侦听器
31 1
|
4月前
|
JavaScript 前端开发
js防抖函数返回值问题解决方案
本文介绍了如何在JavaScript中创建一个带有返回值的防抖函数,通过结合Promise来实现。这种防抖函数可以在事件触发一定时间后再执行函数,并能处理异步操作的返回值。文章提供了防抖函数的实现代码和如何在实际项目中使用该防抖函数的示例。
46 1
|
3月前
|
缓存 JavaScript 前端开发
深入理解Vue.js中的计算属性与侦听属性
【10月更文挑战第5天】深入理解Vue.js中的计算属性与侦听属性
39 0
|
3月前
|
缓存 JavaScript 前端开发
探索Vue.js中的计算属性与侦听器:深入理解与实践
【10月更文挑战第5天】探索Vue.js中的计算属性与侦听器:深入理解与实践
27 0