litesoft
@ HEAD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.core.formatters; public class FractionalPartFormatHelper implements NumericFormatPartHelper { String mFormat; public FractionalPartFormatHelper( String pFormat ) { mFormat = pFormat; } public void process( StringBuilder pSB, NFparsedparts pParts ) { String zParsedFractionalPart = pParts.getFractionalDigits(); // if( pParts.isDecimalFound() ) // { pSB.append( "." ); // } // else // { // todo: should throw formatting exception? // } switch ( mFormat.length() ) { case 1: // 0 or # if ( mFormat.equals( "0" ) ) { if ( zParsedFractionalPart.length() > 1 ) { throw new IllegalArgumentException( "Fractional part " + zParsedFractionalPart + " is too large to be formatted" ); } else if ( zParsedFractionalPart.length() == 0 ) { pSB.append( "0" ); pSB.append( pParts.getAfterAnyDigits() ); } else { pSB.append( zParsedFractionalPart ); pSB.append( pParts.getAfterAnyDigits() ); } } else if ( mFormat.equals( "#" ) ) { pSB.append( zParsedFractionalPart ); pSB.append( pParts.getAfterAnyDigits() ); } else { throw new IllegalArgumentException( "Illegal Fractional Part Format String" ); } break; case 2: // 0# or 00 if ( mFormat.equals( "0#" ) ) { if ( zParsedFractionalPart.length() >= 1 ) { pSB.append( zParsedFractionalPart ); pSB.append( pParts.getAfterAnyDigits() ); } else { pSB.append( "0" ); pSB.append( pParts.getAfterAnyDigits() ); } } else if ( mFormat.equals( "00" ) ) { if ( zParsedFractionalPart.length() == 1 ) { pSB.append( zParsedFractionalPart ); pSB.append( "0" ); } else if ( zParsedFractionalPart.length() == 2 ) { pSB.append( zParsedFractionalPart ); } else { pSB.append( roundTwoDecimalPlaces( zParsedFractionalPart ) ); } } else { throw new IllegalArgumentException( "Illegal Fractional Part Format String" ); } break; // case 3: // 00# or 000 // if ( mFormat.equals( "00#" ) ) // { //// pSB.append( incertCommas( zParsedFractionalPart ) ); // } // else // { // throw new IllegalArgumentException( "Illegal Fractional Part Format String" ); // } // break; default: break; } } private String roundTwoDecimalPlaces( String pToRound ) { // 12.435 would be rounded up to 12.44. The number to be rounded (3) is rounded to the nearest even digit (4). // 12.445 would be rounded down to 12.44. The number to be rounded (4) is not rounded up because it is an even digit. // 12.44501 would be rounded up to 12.45. The number to be rounded (4) is followed by a five and by additional nonzero digits. char[] zDecimalChars = pToRound.toCharArray(); int second = Integer.parseInt( "" + zDecimalChars[1] ); int third = Integer.parseInt( "" + zDecimalChars[2] ); if ( pToRound.length() == 3 ) { if ( (second % 2) != 0 ) // is odd { if ( third >= 5 ) { second++; } } else { if ( third > 5 ) { second++; } } } if ( pToRound.length() > 3 ) { int rest = Integer.parseInt( pToRound.substring( 2 ) ); if ( (third == 5) && (rest > 0) ) { second++; } if ( third > 5 ) { second++; } } StringBuilder sb = new StringBuilder(); sb.append( zDecimalChars[0] ); sb.append( second ); return sb.toString(); } } |
Commits for litesoft/trunk/Java/core/Anywhere/src/org/litesoft/core/formatters/FractionalPartFormatHelper.java
Revision | Author | Commited | Message |
---|---|---|---|
950 Diff | GeorgeS | Thu 19 Jun, 2014 17:57:04 +0000 | New Lines |
948 Diff | GeorgeS | Sat 07 Jun, 2014 23:42:39 +0000 | Jusefuls Formatter Updated to New Code Format |
947 Diff | GeorgeS | Fri 06 Jun, 2014 23:36:56 +0000 | Correct Spelling of package! |
151 Diff | GeorgeS | Thu 17 Mar, 2011 04:16:22 +0000 | |
49 Diff | GeorgeS | Mon 12 Apr, 2010 02:59:10 +0000 | License Text |
2 | GeorgeS | Sun 07 Feb, 2010 12:50:58 +0000 |