美文网首页
2020-04-01(浮点数经度问题)

2020-04-01(浮点数经度问题)

作者: zcblack | 来源:发表于2020-04-01 16:14 被阅读0次


解决0.1+0.2 !== 0.3 浮点数经度问题

一.原生方法

使用Number.prototype.toFixed()这个方法了。

浮点数运算

toFixed() 方法

浮点数运算的解决方案有很多,这里给出一种目前常用的解决方案, 在判断浮点数运算结果前对计算结果进行精度缩小,因为在精度缩小的过程总会自动四舍五入。

toFixed() 方法使用定点表示法来格式化一个数,会对结果进行四舍五入。语法为:

JavaScript 代码:

numObj.toFixed(digits)

参数 digits 表示小数点后数字的个数;介于 0 到 20 (包括)之间,实现环境可能支持更大范围。如果忽略该参数,则默认为 0。

返回一个数值的字符串表现形式,不使用指数记数法,而是在小数点后有 digits 位数字。该数值在必要时进行四舍五入,另外在必要时会用 0 来填充小数部分,以便小数部分有指定的位数。 如果数值大于 1e+21,该方法会简单调用 Number.prototype.toString()并返回一个指数记数法格式的字符串。

特别注意:toFixed() 返回一个数值的字符串表现形式。

具体可以查看 MDN中的说明,那么我们可以这样解决精度问题:

JavaScript 代码:

 <script>    

parseFloat((数学表达式).toFixed(digits)) // toFixed() 精度参数须在 0 与20 之间    

// 运行    

parseFloat((0.1 + 0.2).toFixed(10))// 0.3   

parseFloat((0.3 / 0.1).toFixed(10)) // 3      

parseFloat((0.7 * 180).toFixed(10))// 126    

parseFloat((1.0 - 0.9).toFixed(10)) //   0.1       

parseFloat((9.7 * 100).toFixed(10)) //   970     

parseFloat((2.22 + 0.1).toFixed(10)) //   2.32  

</script>

二.手动转换

在进行浮点数进行计算时可以将浮点数转换为整数进行计算后再转为浮点数

((0.1*1000)+(0.2*1000))/1000 === 0.3

相关文章

  • 2020-04-01(浮点数经度问题)

    解决0.1+0.2 !== 0.3 浮点数经度问题 一.原生方法 使用Number.prototype.toFix...

  • Kafka相关面试题

    title: Kafka常见问题date: 2020-04-01 16:25:49update: 2020-04-...

  • 《经度》

    5月一直没有选择读哪一本书,直到端午节前才急急忙忙选了一本,这书还不是自己选的,这或许就是一个选择困难症患者,...

  • 经度

    一月从南到北 我很热你很冷 我在深圳发微信 你在北京已读不回 两个地方人都很多 唯独没有你和我

  • python:数据可视化

    题目: data.txt 中的数据表示地球表面各个经纬度坐标的海拔高度,其中每行三个浮点数,分别是经度[-180,...

  • JavaScript浮点数的精度问题深究

    JavaScript浮点数的精度问题 javascript浮点数的精度问题是老生常谈了,但往往只知道0.1 + 0...

  • 在 iOS 上使用 UIImagePickerControlle

    原文:Using UIImagePickerController on iOS @2020-04-01[https...

  • 浮点数原理与精度损失问题

    写在前面 碰巧最近定义接口的时候碰到了浮点数精度的问题,稍微整理了浮点数的一些知识点: 浮点数的底层表示 浮点数的...

  • C 浮点数

    浮点数存储带来的问题 问题背景 计算机中浮点数(float或double类型)都有精度范围,对于超出精度范围的浮点...

  • 浮点数处理

    本文首发于个人博客 浮点数表达 IEEE754标准是用于规范浮点数运算的IEEE标准,用于解决浮点数标准混乱的问题...

网友评论

      本文标题:2020-04-01(浮点数经度问题)

      本文链接:https://www.haomeiwen.com/subject/krdauhtx.html