歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java自定義類開實現四捨五入

Java自定義類開實現四捨五入

日期:2017/3/1 9:46:43   编辑:Linux編程

工作中經常用到浮點數的四捨五入,但Java類庫中的Math類的rint()和round()兩個方法並不能滿足我們的所有需要,下面我們就自定義四捨五入類來滿足實際工作中的需要。

public class RoundTool {


/**

* 浮點數的四捨五入

* @param value

* @param dotNum

* @return

*/

public static String round(double value,int dotNum){

String strValue=String.valueOf(value);//轉換為字符串

int pos=strValue.indexOf(".");//小數點位置

int len=strValue.length();//數值總位數

int dotLen=len-1-pos;//小數的位數

double endValue=0.0;//保存運算結果的中間變量

String endNum="";//保存最終結果的變量

if(dotNum<dotLen){//需要保留的小數位數小於實現小數位數

String cNum=strValue.substring(pos+dotNum+1,pos+dotNum+2);//獲得需要進位

int iNum=Integer.valueOf(cNum);//轉換不整數

String sNum=strValue.substring(0,pos+dotNum+1);//獲得需要保留的未進行捨入處理的數值

endValue=Double.valueOf(sNum);//轉換為double型

if(iNum>=5){//如果需要捨入的值大於等於5

String endPos="";//存放需要進位的小數值

String dotValue="";//連接小數點後的多個0

for(int i=1;i<dotNum;i++){

dotValue=dotValue+"0";//將小數點後的多個0連接到一起

}

endPos="0."+dotValue+"1";//需要進位的小數值

endValue=endValue+Double.valueOf(endPos);//四捨五入處理之後的值

strValue=String.valueOf(endValue);//處理後的值轉換為字符串

pos=strValue.indexOf(".");//小數點後的位置

len=strValue.length();//數值總位數

dotLen=len-1-pos;//小數的位數

if(dotLen<dotNum){//如果小數位數不足,則補足位數

for(int i=pos+dotLen+1;i<pos+dotNum+1;i++){

endNum=String.valueOf(endValue)+"0";//補足小數位數

}

}else{//如果小數位數正好,或超過要求,則進行截位處理

endNum=String.valueOf(endValue).substring(0,pos+dotNum+1);

}

}else{

;

endNum=strValue.substring(0,strValue.indexOf("."))+

strValue.substring(strValue.indexOf("."),strValue.indexOf(".")+dotNum+1);

}

}else if(dotNum==dotLen){

endNum=String.valueOf(value);//小數位數與要求的位數相同,直接轉換為字符串

}else{//如果小數位數不足,則補足位數

for(int i=1;i<=dotNum-dotLen;i++){

strValue=strValue+"0";//補足小數位數

}

endNum=strValue;//最終值

}

return endNum;

}


public static void main(String[] args){

System.out.println(RoundTool.round(123.121, 2));

System.out.println(RoundTool.round(123.456789,3));

System.out.println(RoundTool.round(123.5,3));

}

}

程序運行結果:

123.12

123.45

123.500

Copyright © Linux教程網 All Rights Reserved