java常用工具类 数字工具类
本文实例为大家分享了java常用工具类,数字工具类的具体代码,供大家参考,具体内容如下
packagecom.jarvis.base.util; importjava.math.BigDecimal; importjava.text.DecimalFormat; importjava.text.NumberFormat; importjava.util.Random; publicclassNumericHelper{ /** *描述:通过一个整数i获取你所要的哪几个(从0开始)i为多个2的n次方之和,如i=7,那么根据原值是2的n次方之各,你的原值必定是1,2,4。 * *@parami *数值 *@return */ publicstaticint[]getWhich(longi){ intexp=Math.getExponent(i); if(i==(1<<(exp+1))-1){ exp=exp+1; } int[]num=newint[exp]; intx=exp-1; for(intn=0;(1<i&&(1< 0){ pattern+="."+createStr("0",digits,""); } returnformat(num,pattern); } /** *描述:生成字符串 * *@paramarg0 *字符串元素 *@paramarg1 *生成个数 *@paramarg2 *间隔符号 *@return */ privatestaticStringcreateStr(Stringarg0,intarg1,Stringarg2){ if(arg0==null){ return""; }else{ StringBuffersb=newStringBuffer(); for(inti=0;i 0){ sb.delete(sb.lastIndexOf(arg2),sb.length()); } returnsb.toString(); } } /** *描述:数字格式化 * *@paramnum *数字 *@parampattern *格式 *@return */ publicstaticStringformat(doublenum,Stringpattern){ NumberFormatfmt=null; if(pattern!=null&&pattern.length()>0){ fmt=newDecimalFormat(pattern); }else{ fmt=newDecimalFormat(); } returnfmt.format(num); } /** *求浮点数的权重 * *@paramnumber *@return */ publicstaticdoubleweight(doublenumber){ if(number==0){ return1; } doublee=Math.log10(Math.abs(number)); intn=Double.valueOf(Math.floor(e)).intValue(); doubleweight=1; if(n>0){ for(inti=0;i n;i--){ weight/=10; } } returnweight; } /** *获得权重的单位 * *@paramscale *@return */ publicstaticStringunit(doublescale){ if(scale==1||scale==0){ return"";//不设置单位倍率单位,使用基准单位 } String[]units=newString[]{"十","百","千","万","十万","百万","千万","亿","十亿","百亿","千亿","兆"}; String[]units2=newString[]{"十分","百分","千分","万分","十万分","百万分","千万分"}; doublee=Math.log10(scale); intposition=Double.valueOf(Math.ceil(e)).intValue(); if(position>=1&&position<=units.length){ returnunits[position-1]; }elseif(position<=-1&&-position<=units2.length){ returnunits2[-position-1]; }else{ return"无量"; } } /** *获得浮点数的缩放比例 * *@paramnum *@return */ publicstaticdoublescale(doublenum){ doubleabsValue=Math.abs(num); //无需缩放 if(absValue<10000&&absValue>=1){ return1; } //无需缩放 elseif(absValue<1&&absValue>0.0001){ return1; }else{ returnweight(num)/10; } } /** *获得缩放后并且格式化的浮点数 * *@paramnum *@paramscale *@return */ publicstaticdoublescaleNumber(doublenum,doublescale){ DecimalFormatdf=null; if(scale==1){ df=newDecimalFormat("#.0000"); }else{ df=newDecimalFormat("#.00"); } doublescaledNum=num/scale; returnDouble.valueOf(df.format(scaledNum)); } /** *产生n位随机数TODO:性能不要,有待优化 */ publicstaticStringramdomNumber(intn){ if(n<=0){ thrownewIllegalArgumentException("nmustbepositive!"); } Randomrandom=newRandom(); StringBuilderresult=newStringBuilder(); for(inti=0;i 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。