Pig四舍五入到小数点后第n位

vlju58qv  于 2021-06-24  发布在  Pig
关注(0)|答案(1)|浏览(401)

如何将一个浮点数或双精度整数舍入到pig中的第n个小数位。例如

f(3.999999, 1) =  3.9
f(3.42317, 2) = 3.42
f(1.03, 1) = 1.0

我真的只需要四舍五入到小数点后的第一位,但我想我还是把这个问题留作一般性的。我看到了“Pig的十进制四舍五入到两位”的问题,但答案没有解释到我能适应这个问题的程度。谢谢

回答

结果数学很容易解决这个问题。只要做:

FLOOR(column * 10^n) / 10^n
q1qsirdb

q1qsirdb1#

Pig有圆的尾巴。这将根据需要的小数点进行四舍五入。

B = FOREACH A GENERATE ROUND_TO(input,num_of_decimal_places);

例子:
输入文件:

3.999999
3.42317
1.03

a=加载“文件”为(num:float); b=每个a生成一个舍入到(num,2);b排土场;
输出:

(4.0)
(3.42)
(1.03)

相关问题