You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by sr...@apache.org on 2010/04/02 12:11:32 UTC

svn commit: r930227 - /lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/RecommendedItemsWritable.java

Author: srowen
Date: Fri Apr  2 10:11:31 2010
New Revision: 930227

URL: http://svn.apache.org/viewvc?rev=930227&view=rev
Log:
MAHOUT-360: better rounding

Modified:
    lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/RecommendedItemsWritable.java

Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/RecommendedItemsWritable.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/RecommendedItemsWritable.java?rev=930227&r1=930226&r2=930227&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/RecommendedItemsWritable.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/RecommendedItemsWritable.java Fri Apr  2 10:11:31 2010
@@ -21,6 +21,8 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.EOFException;
 import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.MathContext;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -34,6 +36,8 @@ import org.apache.mahout.cf.taste.recomm
  * highest.
  */
 public final class RecommendedItemsWritable implements Writable {
+
+  private static final MathContext ROUNDING = new MathContext(5);
   
   private List<RecommendedItem> recommended;
   
@@ -96,14 +100,8 @@ public final class RecommendedItemsWrita
       }
       result.append(item.getItemID());
       result.append(':');
-      String valueString = String.valueOf(item.getValue());
-      // Is this rounding too crude?
-      if (valueString.indexOf('E') >= 0) {
-        valueString = "0.0";
-      } else if (valueString.length() > 6) {
-        valueString = valueString.substring(0, 6);
-      }
-      result.append(valueString);
+      BigDecimal bd = new BigDecimal(item.getValue()).round(ROUNDING);
+      result.append(bd.toPlainString());
     }
     result.append(']');
     return result.toString();