Забавный способ сделать это - использовать regexp_extract
, чтобы сохранить не более 2 цифр после десятичной дроби:
Seq(8989.09888, 22.1, 88, 345.111)
.toDF("x")
.select(regexp_extract('x, "[0-9]+(\\.[0-9]{1,2})?", 0) cast "double" as "x")
.show
+-------+
| x|
+-------+
|8989.09|
| 22.1|
| 88.0|
| 345.11|
+-------+
Обратите внимание, что мы обрабатываем все разные случаи (без десятичного числа, только один ...).