gpt4 book ai didi

scala - 在Spark中舍入为Double

转载 作者:行者123 更新时间:2023-12-04 13:22:30 25 4
gpt4 key购买 nike

我有一些Cassandra数据,其类型为double,需要在spark中将其四舍五入到小数点后一位。

问题是如何从cassandra中提取它,将其转换为小数,四舍五入到小数点后1位,然后写回到cassandra中的表中。我的舍入代码如下:

BigDecimal(number).setScale(1, BigDecimal.RoundingMode.DOWN).toDouble

如果输入的数字是小数,这会很好,但是我不知道在路由之前如何将 double 数转换为小数。四舍五入前,我的Double需要除以1000000。

例如,在将四舍五入为510.9之前,510999000将为510.990。

编辑:我可以使用以下命令来执行所需的操作。
BigDecimal(((number).toDouble) / 1000000).setScale(1, BigDecimal.RoundingMode.DOWN).toDouble

不知道这有多好,但它能起作用。

最佳答案

很好的答案的家伙。只是用别的方法做同样的事情

1. If using Spark DataFrame then ( x and y are DataFrames )
import org.apache.spark.sql.functions.round
val y = x.withColumn("col1", round($"col1", 3))

2. val y = x.rdd.map( x => (x(0)*1000).round / 1000.toDouble )

关于scala - 在Spark中舍入为Double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34888419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com