1 33 package smallsql.database; 34 35 36 final class ExpressionFunctionRound extends ExpressionFunctionReturnP1Number { 37 38 final int getFunction(){ return SQLTokenizer.ROUND; } 39 40 boolean isNull() throws Exception { 41 return param1.isNull() || param2.isNull(); 42 } 43 44 45 final double getDouble() throws Exception { 46 if(isNull()) return 0; 47 final int places = param2.getInt(); 48 double value = param1.getDouble(); 49 long factor = 1; 50 if(places > 0){ 51 for(int i=0; i<places; i++){ 52 factor *= 10; 53 } 54 value *= factor; 55 }else{ 56 for(int i=0; i>places; i--){ 57 factor *= 10; 58 } 59 value /= factor; 60 } 61 value = Math.rint( value ); 62 if(places > 0){ 63 value /= factor; 64 }else{ 65 value *= factor; 66 } 67 return value; 68 } 69 70 71 } | Popular Tags |