1 32 package net.sf.retrotranslator.runtime.format; 33 34 import java.text.DecimalFormatSymbols ; 35 36 39 abstract class NumericConversion extends Conversion { 40 41 protected static void appendNumber(StringBuilder builder, String number, 42 boolean groupingUsed, DecimalFormatSymbols symbols) { 43 for (int i = 0; i < number.length(); i++) { 44 if (groupingUsed && i > 0 && (number.length() - i) % 3 == 0) { 45 builder.append(symbols.getGroupingSeparator()); 46 } 47 builder.append((char) (symbols.getZeroDigit() - '0' + number.charAt(i))); 48 } 49 } 50 51 protected static boolean printSpecialNumber(FormatContext context, double argument) { 52 if (Double.isNaN(argument)) { 53 context.writePadded("NaN"); 54 return true; 55 } 56 if (argument == Double.POSITIVE_INFINITY) { 57 context.writePadded(context.isFlag('+') ? "+Infinity" : "Infinity"); 58 return true; 59 } 60 if (argument == Double.NEGATIVE_INFINITY) { 61 context.writePadded(context.isFlag('(') ? "(Infinity)" : "-Infinity"); 62 return true; 63 } 64 return false; 65 } 66 67 protected static void printNumber(FormatContext context, boolean negative, String prefix, 68 StringBuilder argument, DecimalFormatSymbols symbols) { 69 StringBuilder builder = new StringBuilder (); 70 if (negative) { 71 if (context.isFlag('(')) { 72 builder.append('('); 73 argument.append(')'); 74 } else { 75 builder.append('-'); 76 } 77 } else { 78 if (context.isFlag('+')) { 79 builder.append('+'); 80 } else if (context.isFlag(' ')) { 81 builder.append(' '); 82 } 83 } 84 if (prefix != null) { 85 builder.append(prefix); 86 } 87 if (context.isFlag('0')) { 88 int count = context.getWidth() - builder.length() - argument.length(); 89 for (int i = 0; i < count; i++) { 90 builder.append(symbols.getZeroDigit()); 91 } 92 } 93 context.writePadded(builder.append(argument).toString()); 94 } 95 96 } 97 | Popular Tags |