【问题标题】:Apache Pig floating number SUM error in precisionApache Pig 浮点数 SUM 精度错误
【发布时间】:2016-03-11 13:18:26
【问题描述】:

我有双值的行。 然而,它们的总和有额外的浮动数字,我不想在输出中出现。有什么想法可以避免这个问题吗?

A = LOAD 'test.csv' Using PigStorage(',') AS (
        ID: chararray,
        COST:double
);
B = GROUP A BY (ID);
C = FOREACH B GENERATE SUM(A.COST); 
STORE C INTO 'out.txt' USING PigStorage(',');

输入文件

A,0.51
A,0.51
B,4.81
B,4.81

预期输出文件

A,1.02
B,9.62

实际无效的输出文件

10.020000457763672
9.619999885559082   

【问题讨论】:

  • 你的代码是正确的。它必须给出与您预期相同的答案。尝试再次运行您的。

标签: sum double apache-pig floating


【解决方案1】:

试试C = FOREACH B GENERATE ROUND(SUM(A.COST)*100.0)/100.0;

编辑 它有效,见下面的输出

【讨论】:

  • @math_law 我已经编辑了答案以包含输出。
猜你喜欢
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 2020-02-03
  • 1970-01-01
  • 2018-02-23
相关资源
最近更新 更多