Browse Source

MAPREDUCE-1880. Fix BigDecimal.divide(..) in the pi example.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20@956700 13f79535-47bb-0310-9956-ffa450edef68
Tsz-wo Sze 15 năm trước cách đây
mục cha
commit
b3c96a0203
2 tập tin đã thay đổi với 6 bổ sung2 xóa
  1. 2 0
      CHANGES.txt
  2. 4 2
      src/examples/org/apache/hadoop/examples/PiEstimator.java

+ 2 - 0
CHANGES.txt

@@ -34,6 +34,8 @@ Release 0.20.3 - Unreleased
 
     MAPREDUCE-118. Fix Job.getJobID(). (Amareshwari Sriramadasu via sharad)
 
+    MAPREDUCE-1880. Fix BigDecimal.divide(..) in the pi example.  (szetszwo)
+
   IMPROVEMENTS
 
     MAPREDUCE-1407. Update javadoc in mapreduce.{Mapper,Reducer} to match

+ 4 - 2
src/examples/org/apache/hadoop/examples/PiEstimator.java

@@ -20,6 +20,7 @@ package org.apache.hadoop.examples;
 
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Iterator;
 
 import org.apache.hadoop.conf.Configured;
@@ -310,10 +311,11 @@ public class PiEstimator extends Configured implements Tool {
       }
 
       //compute estimated value
+      final BigDecimal numTotal
+          = BigDecimal.valueOf(numMaps).multiply(BigDecimal.valueOf(numPoints));
       return BigDecimal.valueOf(4).setScale(20)
           .multiply(BigDecimal.valueOf(numInside.get()))
-          .divide(BigDecimal.valueOf(numMaps))
-          .divide(BigDecimal.valueOf(numPoints));
+          .divide(numTotal, RoundingMode.HALF_UP);
     } finally {
       fs.delete(TMP_DIR, true);
     }