Scala浮点运算精度问题
在Spark开发的时候,直接使用java.math.BigDecimal进行浮点相乘的时候,依然有精度缺失.但是如果是纯JAVA就没有,在Scala中调用JAVA的BigDecimal就有这样的问题.
偶然之间发现Scala也实现了scala.math.BigDecimal. 换用SCALA自身的BigDecimal就没这样的问题了.
不知道深层次的原因,在这抛砖引玉,如果有人知道的,请赐教.
下面是实验代码.
package com.cisco.test import java.math.BigDecimal object TestSyntax { def main(args: Array[String]): Unit = { val local_price=new BigDecimal(0.015) val exchange_rate = new BigDecimal(2) //0.02999999999999999888977697537484345957636833190917968750 println(local_price.multiply(exchange_rate)) //0.030 import scala.math.BigDecimal println(BigDecimal("0.015") * BigDecimal("2")) println(BigDecimal("0.0") * BigDecimal("0.751879699")) } }
相关推荐
匆匆那些年 2020-10-15
TheBigBlue 2020-07-28
shenwenjie 2020-07-07
muhongdi 2020-07-07
waitwolf 2020-07-08
yunfenglee 2020-07-08
yunfenglee 2020-07-08
kekeromer 2020-07-08
匆匆那些年 2020-07-07
liqinglin0 2020-07-05
TheBigBlue 2020-07-05
kekeromer 2020-06-13
zhixingheyitian 2020-06-08
TheBigBlue 2020-06-06
liqinglin0 2020-06-01
liqinglin0 2020-06-01
yunfenglee 2020-05-30
MICKEYSTUDY 2020-05-28
muhongdi 2020-05-19