X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjavajs%2Futil%2FDF.java;h=b5c8717e6b0fdcd6f53176ff978bbc262dcc13b7;hb=5e556aaaedbcf56063c72677364c7fe2b961230d;hp=1d8a2f1331ebc4c246dfdb60827e605945ba5274;hpb=507f8f9e119ce89ba04aea3b3d814cbe58f3d686;p=jalview.git diff --git a/src/javajs/util/DF.java b/src/javajs/util/DF.java index 1d8a2f1..b5c8717 100644 --- a/src/javajs/util/DF.java +++ b/src/javajs/util/DF.java @@ -73,7 +73,7 @@ public class DF { if (decimalDigits > formattingStrings.length) decimalDigits = formattingStrings.length; if (value == 0) - return formattingStrings[decimalDigits] + "E+0"; + return formattingStrings[decimalDigits - 1] + "E+0"; //scientific notation n = 0; double d; @@ -87,9 +87,19 @@ public class DF { String s = ("" + d).toUpperCase(); int i = s.indexOf("E"); n = PT.parseInt(s.substring(i + 1)) + n; - return (i < 0 ? "" + value : formatDecimal(PT.parseFloat(s.substring( - 0, i)), decimalDigits - 1) - + "E" + (n >= 0 ? "+" : "") + n); + String sf; + if (i < 0) { + sf = "" + value; + } else { + float f = PT.parseFloat(s.substring(0, i)); + if (f == 10 || f == -10) { + //d = 9.99999997465; n = -6 --> 10.00000E-5 + f /= 10; + n += (n < 0 ? 1 : -1); + } + sf = formatDecimal(f, decimalDigits - 1); + } + return sf + "E" + (n >= 0 ? "+" : "") + n; } if (decimalDigits >= formattingStrings.length)