例如,我有一个数据帧,我正在这样做:
df = dataframe.withColumn("test", lit(0.4219759403))
我只想得到点后的前四个数字,不需要四舍五入
当我强制转换为DecimalType时,使用.cast(DataTypes.createDecimalType(20,4)
或者,即使使用round函数,该数字也被舍入为0.4220
我发现在不进行舍入的情况下执行此操作的唯一方法是应用函数format_number()
,但此函数给我一个字符串,当我将此string to DecimalType(20,4)
强制转换时,框架会将数字再次舍入到0.4220
我需要在不舍入的情况下将这个数字转换为enter code here
十进制(20,4),我希望看到0.4219
我该怎么做
您好,欢迎来到stackoverflow,
请下次尝试使用您尝试过的代码提供一个可复制的示例,无论如何,这对我来说是有效的:
当然,如果您想覆盖同一列,可以通过始终放置“test”,我选择不同的名称让您查看步骤
如果小数点前有超过1位的数字,则} 完成此操作
substr
不适用。相反,您可以使用正则表达式始终提取前4位小数(如果存在)。您可以使用^{
范例
相关问题 更多 >
编程相关推荐