Java Spark格式无舍入数

Java Spark格式无舍入数,java,apache-spark,apache-spark-sql,Java,Apache Spark,Apache Spark Sql,我有一个数字,例如123.456789,我想把它转换成123.45 如果我使用format\u number这将始终将小数点四舍五入到123.46 我如何在没有舍入的情况下实现这一点。我尝试了下面的一个,但我担心当我有像1234或0.1267 functions.concat(split(col(Number), "\\.").getItem(0), substring(split(col(Number), "\\.").getItem(1),1,2)) 使用 只适用于正数。对于负数,您希望使

我有一个数字,例如
123.456789
,我想把它转换成
123.45

如果我使用
format\u number
这将始终将小数点四舍五入到
123.46

我如何在没有舍入的情况下实现这一点。我尝试了下面的一个,但我担心当我有像
1234
0.1267

functions.concat(split(col(Number), "\\.").getItem(0), substring(split(col(Number), "\\.").getItem(1),1,2))
使用

只适用于正数。对于负数,您希望使用
天花板
而不是
地板
,因此根据Spark版本,使用
if()
case when

format_number(if (Number < 0, ceiling(Number * 100), floor(Number * 100)) / 100, 2)
格式_编号(如果(编号<0,天花板(编号*100),地板(编号*100))/100,2)

如果数字是0.4567,它将打印45.67。@rakeeee为什么要打印它<代码>0.4567*100=45.67→ <代码>楼层(45.67)=45→ <代码>45/100=0.45→ <代码>格式\u编号(0.45,2)=“0.45”——其他示例:
number=42
→ <代码>42*100=4200→ <代码>楼层(4200)=4200→ <代码>4200/100=42→ <代码>格式\u编号(42,2)='42.00'
format_number(if (Number < 0, ceiling(Number * 100), floor(Number * 100)) / 100, 2)