Scala 绝对函数

Scala 绝对函数,scala,bigdecimal,absolute,Scala,Bigdecimal,Absolute,在我的程序中,我使用Bigdecimal截断数字并将它们存储在变量中。123.456789显示为123.45。此外,我正在尝试查找数字的绝对值。这里出现了一个问题,即-123.45应该显示为123.45,但它显示为123.4589Egh。有人能帮我查找数字的绝对值吗 var diff1=BigDecimal(diff).setScale(2, BigDecimal.RoundingMode.HALF_UP).toDouble var bigdec=abs(diff1) 尝试在一个数组中输入1

在我的程序中,我使用Bigdecimal截断数字并将它们存储在变量中。123.456789显示为123.45。此外,我正在尝试查找数字的绝对值。这里出现了一个问题,即-123.45应该显示为123.45,但它显示为123.4589Egh。有人能帮我查找数字的绝对值吗

var diff1=BigDecimal(diff).setScale(2, BigDecimal.RoundingMode.HALF_UP).toDouble
var bigdec=abs(diff1) 

尝试在一个数组中输入10-15个数字(在diff变量中)

嗯,我不确定你的问题是什么,但对我来说这很好:

val diff = -123.456789
var diff1 = BigDecimal(diff).setScale(2, BigDecimal.RoundingMode.DOWN).toDouble
var bigdec = Math.abs(diff1)
println(bigdec) // 123.45

请注意,如果您想要123.45而不是123.46,您必须更改取整模式。

嗯,我不确定您的问题是什么,但对我来说,这很好:

val diff = -123.456789
var diff1 = BigDecimal(diff).setScale(2, BigDecimal.RoundingMode.DOWN).toDouble
var bigdec = Math.abs(diff1)
println(bigdec) // 123.45

请注意,如果您想要123.45而不是123.46,则必须更改舍入模式。

接受数组不会改变任何内容,尽管在舍入时您现在需要创建def并映射到数组上-因为您无法在数组上调用BigDecimal apply函数:

// generates an Array of 20 elements with random doubles from 0 to 200
val diff = Array.fill(20)(math.random).map(_ * 200)
  .map { num => // using this map function to make some negatives
    if (num < 100) num * -1
    else num
  }

def round(double: Double) = BigDecimal(double)
  .setScale(2, BigDecimal.RoundingMode.HALF_UP)
  .toDouble

var absolute = diff.map(num => Math.abs(round(num)))
//生成一个包含20个元素的数组,其中包含从0到200的随机双精度
val diff=Array.fill(20)(数学随机).map(*200)
.map{num=>//使用此map函数制作一些负片
如果(num<100)num*-1
else num
}
def四舍五入(双精度:双精度)=BigDecimal(双精度)
.setScale(2,BigDecimal.RoundingMode.HALF_UP)
.托杜布尔
var absolute=diff.map(num=>Math.abs(round(num)))

上述代码是否反映了您正在做的事情?如果是这样的话,对于
var absolute
我得到的是一个
数组[Double]
,带有正数,只有2位小数。

接受数组不会改变任何东西,尽管在舍入时您现在需要对数组进行定义和映射-因为您不能对数组调用bigdecime apply函数:

// generates an Array of 20 elements with random doubles from 0 to 200
val diff = Array.fill(20)(math.random).map(_ * 200)
  .map { num => // using this map function to make some negatives
    if (num < 100) num * -1
    else num
  }

def round(double: Double) = BigDecimal(double)
  .setScale(2, BigDecimal.RoundingMode.HALF_UP)
  .toDouble

var absolute = diff.map(num => Math.abs(round(num)))
//生成一个包含20个元素的数组,其中包含从0到200的随机双精度
val diff=Array.fill(20)(数学随机).map(*200)
.map{num=>//使用此map函数制作一些负片
如果(num<100)num*-1
else num
}
def四舍五入(双精度:双精度)=BigDecimal(双精度)
.setScale(2,BigDecimal.RoundingMode.HALF_UP)
.托杜布尔
var absolute=diff.map(num=>Math.abs(round(num)))

上述代码是否反映了您正在做的事情?如果是这样的话,对于
var absolute
我得到了一个
数组[Double]
,带有正数,只有两位小数。

尝试发布可靠地再现您试图描述的问题的代码。尝试发布可靠地再现您试图描述的问题的代码。