scala使用double类型计算出错

object aaa {
  private class Cauculate {
    def add(a: Double, b: Double): Double = {
      return a+b;
    }
  }
  def main(args: Array[String]) {
    var a: Double = 1.2;
    var b: Double = 1.4;
    println((new Cauculate()).add(a, b)); 
  }
}
本人刚开自始学Scala,代码如上,打印结果是:2.5999999999999996。我想知道在Scala中有没有什么方法精确计算double类型的数值,类似于Java的BigDecimal计算小数。
阅读 7.1k
2 个回答

scala里面也有BigDecimal,你可以这样:

BigDecimal(a + b).setScale(2, BigDecimal.RoundingMode.HALF_UP).toDouble
var a: Double = 1.2;
var b: Double = 1.4;
//保留2位小数
println("%.2f".format(a+b))

------output---------
2.60

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进