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;i0){
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;in;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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。