首页 > 解决方案 > 限制scala中的小数位

问题描述

我是 Scala 的新手,我正在尝试编写一个函数,该函数以双精度和整数作为输入,并以小数点后的精度返回双精度值。

def decimal_value(d: Double, p: Integer) : 
  Double = {
   if (d >= 0) {
     BigDecimal.(d).setScale(p, BigDecimal.RoundingMode.HALF_UP).toDouble
   }
   else
     d
}

我的输入是 1.140060000,我希望输出为 1.14006,但它返回 1.140060000。它没有考虑 5 个精度点之后的 0。

标签: scala

解决方案


1.140060000并且1.14006是相同的数字,所以看起来这个问题是关于打印出来时值的显示方式。调用toStringDouble会得到“1.14006”,这就是你想要的,所以不清楚为什么你会得到“1.140060000”

您可以使用字符串格式化操作来确保获得所需的特定输出:

val str = f"$d7.1f"

推荐阅读