Index: third_party/polymer/v1_0/components-chromium/iron-range-behavior/iron-range-behavior-extracted.js |
diff --git a/third_party/polymer/v1_0/components-chromium/iron-range-behavior/iron-range-behavior-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-range-behavior/iron-range-behavior-extracted.js |
index ce733745cafb60ec55844f4bbbcf649ff2e4713e..c16f335fbfacddf73e6764fd62dfd29d305d1587 100644 |
--- a/third_party/polymer/v1_0/components-chromium/iron-range-behavior/iron-range-behavior-extracted.js |
+++ b/third_party/polymer/v1_0/components-chromium/iron-range-behavior/iron-range-behavior-extracted.js |
@@ -71,6 +71,14 @@ |
}, |
_calcStep: function(value) { |
+ /** |
+ * if we calculate the step using |
+ * `Math.round(value / step) * step` we may hit a precision point issue |
+ * eg. 0.1 * 0.2 = 0.020000000000000004 |
+ * http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html |
+ * |
+ * as a work around we can divide by the reciprocal of `step` |
+ */ |
return this.step ? (Math.round(value / this.step) / (1 / this.step)) : value; |
}, |