JAL-1807 test
[jalviewjs.git] / bin / javajs / util / DF.js
1 Clazz.declarePackage ("javajs.util");
2 Clazz.load (["java.lang.Boolean"], "javajs.util.DF", ["java.lang.Double", "$.Float", "javajs.util.PT", "$.SB"], function () {
3 c$ = Clazz.declareType (javajs.util, "DF");
4 c$.setUseNumberLocalization = Clazz.defineMethod (c$, "setUseNumberLocalization", 
5 function (TF) {
6 javajs.util.DF.useNumberLocalization[0] = (TF ? Boolean.TRUE : Boolean.FALSE);
7 }, "~B");
8 c$.formatDecimalDbl = Clazz.defineMethod (c$, "formatDecimalDbl", 
9 function (value, decimalDigits) {
10 if (decimalDigits == 2147483647 || value == -Infinity || value == Infinity || Double.isNaN (value)) return "" + value;
11 return javajs.util.DF.formatDecimal (value, decimalDigits);
12 }, "~N,~N");
13 c$.formatDecimal = Clazz.defineMethod (c$, "formatDecimal", 
14 function (value, decimalDigits) {
15 if (decimalDigits == 2147483647 || value == -Infinity || value == Infinity || Float.isNaN (value)) return "" + value;
16 var n;
17 if (decimalDigits < 0) {
18 decimalDigits = -decimalDigits;
19 if (decimalDigits > javajs.util.DF.formattingStrings.length) decimalDigits = javajs.util.DF.formattingStrings.length;
20 if (value == 0) return javajs.util.DF.formattingStrings[decimalDigits] + "E+0";
21 n = 0;
22 var d;
23 if (Math.abs (value) < 1) {
24 n = 10;
25 d = value * 1e-10;
26 } else {
27 n = -10;
28 d = value * 1e10;
29 }var s = ("" + d).toUpperCase ();
30 var i = s.indexOf ("E");
31 n = javajs.util.PT.parseInt (s.substring (i + 1)) + n;
32 return (i < 0 ? "" + value : javajs.util.DF.formatDecimal (javajs.util.PT.parseFloat (s.substring (0, i)), decimalDigits - 1) + "E" + (n >= 0 ? "+" : "") + n);
33 }if (decimalDigits >= javajs.util.DF.formattingStrings.length) decimalDigits = javajs.util.DF.formattingStrings.length - 1;
34 var s1 = ("" + value).toUpperCase ();
35 var pt = s1.indexOf (".");
36 if (pt < 0) return s1 + javajs.util.DF.formattingStrings[decimalDigits].substring (1);
37 var isNeg = s1.startsWith ("-");
38 if (isNeg) {
39 s1 = s1.substring (1);
40 pt--;
41 }var pt1 = s1.indexOf ("E-");
42 if (pt1 > 0) {
43 n = javajs.util.PT.parseInt (s1.substring (pt1 + 1));
44 s1 = "0." + "0000000000000000000000000000000000000000".substring (0, -n - 1) + s1.substring (0, 1) + s1.substring (2, pt1);
45 pt = 1;
46 }pt1 = s1.indexOf ("E");
47 if (pt1 > 0) {
48 n = javajs.util.PT.parseInt (s1.substring (pt1 + 1));
49 s1 = s1.substring (0, 1) + s1.substring (2, pt1) + "0000000000000000000000000000000000000000";
50 s1 = s1.substring (0, n + 1) + "." + s1.substring (n + 1);
51 pt = s1.indexOf (".");
52 }var len = s1.length;
53 var pt2 = decimalDigits + pt + 1;
54 if (pt2 < len && s1.charAt (pt2) >= '5') {
55 return javajs.util.DF.formatDecimal (value + (isNeg ? -1 : 1) * javajs.util.DF.formatAdds[decimalDigits], decimalDigits);
56 }var sb = javajs.util.SB.newS (s1.substring (0, (decimalDigits == 0 ? pt : ++pt)));
57 for (var i = 0; i < decimalDigits; i++, pt++) {
58 if (pt < len) sb.appendC (s1.charAt (pt));
59  else sb.appendC ('0');
60 }
61 s1 = (isNeg ? "-" : "") + sb;
62 return (Boolean.TRUE.equals (javajs.util.DF.useNumberLocalization[0]) ? s1 : s1.$replace (',', '.'));
63 }, "~N,~N");
64 c$.formatDecimalTrimmed = Clazz.defineMethod (c$, "formatDecimalTrimmed", 
65 function (x, precision) {
66 var str = javajs.util.DF.formatDecimalDbl (x, precision);
67 var m = str.length - 1;
68 var zero = '0';
69 while (m >= 0 && str.charAt (m) == zero) m--;
70
71 return str.substring (0, m + 1);
72 }, "~N,~N");
73 Clazz.defineStatics (c$,
74 "formattingStrings",  Clazz.newArray (-1, ["0", "0.0", "0.00", "0.000", "0.0000", "0.00000", "0.000000", "0.0000000", "0.00000000", "0.000000000"]),
75 "zeros", "0000000000000000000000000000000000000000",
76 "formatAdds",  Clazz.newFloatArray (-1, [0.5, 0.05, 0.005, 0.0005, 0.00005, 0.000005, 0.0000005, 0.00000005, 0.000000005, 0.0000000005]));
77 c$.useNumberLocalization = c$.prototype.useNumberLocalization =  Clazz.newArray (-1, [Boolean.TRUE]);
78 });