Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 如何在CDAP Wrangler中对十进制值进行四舍五入?_Google Cloud Platform_Google Cloud Data Fusion_Cdap - Fatal编程技术网

Google cloud platform 如何在CDAP Wrangler中对十进制值进行四舍五入?

Google cloud platform 如何在CDAP Wrangler中对十进制值进行四舍五入?,google-cloud-platform,google-cloud-data-fusion,cdap,Google Cloud Platform,Google Cloud Data Fusion,Cdap,我分析了一个CSV文件,其中包含货币汇率列,该列的值具有不同的小数位数,例如: 3.6415 0.896458 一, 0.30376 我希望将所有费率四舍五入至小数点后4位,在上述情况下,应如下所示: 3.6415 0.8965 1.0000 0.3038 将列数据类型更改为“float”时,“format”选项变灰。我查看了“指令”和“函数”章节以了解更多信息,没有提到浮点值的小数点。我找到了,但仍然不知道是否可以根据需要对值进行四舍五入 你能告诉我如何实现我上面描述的格式吗?任何输入

我分析了一个CSV文件,其中包含货币汇率列,该列的值具有不同的小数位数,例如:

  • 3.6415
  • 0.896458
  • 一,
  • 0.30376
我希望将所有费率四舍五入至小数点后4位,在上述情况下,应如下所示:

  • 3.6415
  • 0.8965
  • 1.0000
  • 0.3038
将列数据类型更改为“float”时,“format”选项变灰。我查看了“指令”和“函数”章节以了解更多信息,没有提到浮点值的小数点。我找到了,但仍然不知道是否可以根据需要对值进行四舍五入


你能告诉我如何实现我上面描述的格式吗?任何输入都将不胜感激。

如果您已经将列数据类型更改为float,则可以使用“计算”(而不是“格式”)下的选项执行诸如舍入、乘法、除法等操作。请注意,“舍入”将舍入到最接近的整数,因此您需要执行诸如乘法和除法10之类的操作^(所需小数位数)以及四舍五入

您还可以定义一个自定义转换来执行类似的操作。一个简单的自定义转换,将名为col1的列的所有值舍入到小数点后两位,可能如下所示:math:round(col1*100)*0.01


对于更复杂(可能更精确)的自定义转换,您可以使用jexl表达式。有关自定义转换的更多信息,包括示例,请参见此处:

谢谢,最后我想到了如何首先对浮点值进行乘法、舍入和除法,例如21.34748798:1)乘以10^4将得到213474.8798 2)四舍五入将得到结果213475 3)除以10^4将返回21,35此解决方案允许我将小数点后4位减少到最多4位。在我的例子中,我需要有固定的小数位数,因此输入1时,我需要10000作为输出。我查看了媒体文章,但到目前为止没有发现。你有什么想法吗?@Marek如果你将类型改为double而不是float,你可以使用下面的自定义转换将其四舍五入到小数点后n位,并得到尾随的零:(math:round(body_6*10000.0))/10000.0I测试了你的建议,并将以下指令付诸实施(检查数据类型是否为double):设置列currency_rate math:round(currency_rate*10000.0)/10000.0,输入值为1,输出值为1.0,而不是1.000。我认为这对于计算其他货币的价值是很好的。在需要保持格式一致的情况下,我认为有必要创建用户定义的指令并将列存储为字符串。