猪向下舍入到小数点后第n位

时间:2015-10-26 21:32:17

标签: apache-pig rounding

如何围绕一个浮子或双倍向下到猪的第n个小数位。例如

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

我真的只需要四舍五入到小数点后第一位,但我想我会把问题保留为一般性。我看到小猪的小数点到两个地方"问题,但答案没有解释到我可以适应它的程度。感谢

答案

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

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

1 个答案:

答案 0 :(得分:4)

PIG有ROUND_TO。这将根据所需的小数点进行舍入。

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

示例:

输入文件:

3.999999
3.42317
1.03

A = LOAD'file'为(num:float); B = FOREACH A GENERATE ROUND_TO(num,2); 转储B;

输出:

(4.0)
(3.42)
(1.03)