From d3315ec9191c8317883f397830900f4836a40120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 19 Mar 2018 11:40:11 +0100 Subject: [PATCH] Avoid float precision error after the division by factor issue7201 review41911002 --- src/model.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/model.js b/src/model.js index 9c3dc53c56..ecd17a2550 100644 --- a/src/model.js +++ b/src/model.js @@ -1690,7 +1690,7 @@ } return value; }, - apply_factor: function(value, factor) { + apply_factor: function(record, value, factor) { if (value !== null) { value /= factor; } @@ -1700,7 +1700,7 @@ if (factor === undefined) { factor = 1; } - value = this.apply_factor(this.convert(value), factor); + value = this.apply_factor(record, this.convert(value), factor); Sao.field.Float._super.set_client.call(this, record, value, force_change); }, @@ -1735,9 +1735,15 @@ } return value; }, - apply_factor: function(value, factor) { - value = Sao.field.Numeric._super.apply_factor(value, factor); + apply_factor: function(record, value, factor) { + value = Sao.field.Numeric._super.apply_factor(record, value, factor); if (value !== null) { + var digits = this.digits(record); + if (digits) { + // Round to avoid float precision error + // after the division by factor + value = value.toFixed(digits[1]); + } value = new Sao.Decimal(value); } return value;