From 7ece7a3f46a1ca54cd047a4c6bfff3f5bbed75ae Mon Sep 17 00:00:00 2001 From: wluo-talend Date: Fri, 19 Dec 2014 10:06:43 +0800 Subject: [PATCH] TDI-31476: Serious precision loss in standard routine and undue rounding effect https://jira.talendforge.org/browse/TDI-31476 --- .../resources/java/routines/Numeric.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/main/plugins/org.talend.librariesmanager/resources/java/routines/Numeric.java b/main/plugins/org.talend.librariesmanager/resources/java/routines/Numeric.java index 8c4c70d23c..244f781b21 100644 --- a/main/plugins/org.talend.librariesmanager/resources/java/routines/Numeric.java +++ b/main/plugins/org.talend.librariesmanager/resources/java/routines/Numeric.java @@ -108,6 +108,11 @@ public class Numeric { * */ public static Float convertImpliedDecimalFormat(String format, String toConvert) { + BigDecimal decimal = Numeric.convertString2BigDecimal(format,toConvert); + return new Float(decimal.doubleValue()); + } + + public static BigDecimal convertString2BigDecimal(String format, String toConvert) { long decimalPlace = 1; int indexOf = format.indexOf('V'); if (indexOf > -1) { @@ -123,6 +128,6 @@ public class Numeric { } BigDecimal decimal = new BigDecimal(toConvert); decimal = decimal.divide(new BigDecimal(decimalPlace)); - return new Float(decimal.doubleValue()); + return decimal; } }