public class AdjustmentDouble{
/**
* @param s 需处理的数据
* @param numOfIntPart 整数位数
* @param numOfDecimalPart 小数位数
* @return 处理过的数据
*/
public static String adjustDouble(String s,int numOfIntPart,int numOfDecimalPart){
//按小数点的位置分割成整数部分和小数部分
String[] array = s.split("\\.");
char[] tempA=new char[numOfIntPart];
char[] tempB=new char[numOfDecimalPart];
//整数部分满足精度要求(情况1)
if(array[0].length()==numOfIntPart){
//直接获取整数部分长度字符
for(int i=0;i
tempA[i]=array[0].charAt(i);
}
//小数部分精度大于或等于指定的精度
if(numOfDecimalPart<&#61;array[1].length()){
for(int i&#61;0;i
tempB[i]&#61;array[1].charAt(i);
}
}
//小数部分精度小于指定的精度
if(numOfDecimalPart>array[1].length()){
for(int i&#61;0;i
if(i
tempB[i]&#61;array[1].charAt(i);
}else{
tempB[i]&#61;&#39;0&#39;;
}
}
}
if(numOfDecimalPart&#61;&#61;0){
return String.valueOf(tempA)&#43;String.valueOf(tempB);
}
return String.valueOf(tempA)&#43;"."&#43;String.valueOf(tempB);
}
//整数部分位数大于精度要求(情况2)
if(array[0].length()>numOfIntPart){
//先倒序获取指定位数的整数
for(int i&#61;array[0].length()-1,j&#61;0;(i>&#61;array[0].length()-numOfIntPart)&&(j
tempA[j]&#61;array[0].charAt(i);
System.out.println(tempA[j]);
}
char[] tempA1&#61;new char[numOfIntPart];
//调整顺序
for(int j&#61;0,k&#61;tempA.length-1;j&#61;0);j&#43;&#43;,k--){
tempA1[j]&#61;tempA[k];
System.out.println("tempA1[j]"&#43;tempA1[j]);
}
//小数部分精度大于或等于指定的精度
if(numOfDecimalPart<&#61;array[1].length()){
for(int i&#61;0;i
tempB[i]&#61;array[1].charAt(i);
}
}
//小数部分精度小于指定的精度
if(numOfDecimalPart>array[1].length()){
for(int i&#61;0;i
if(i
tempB[i]&#61;array[1].charAt(i);
}else{
tempB[i]&#61;&#39;0&#39;;
}
}
}
return String.valueOf(tempA1)&#43;"."&#43;String.valueOf(tempB);
}
//整数部分满足精度要求(情况3)
if(array[0].length()&#61;&#61;numOfIntPart){
//直接获取整数部分长度字符
for(int i&#61;0;i
tempA[i]&#61;array[0].charAt(i);
}
//小数部分精度小于指定的精度
if(numOfDecimalPart>array[1].length()){
for(int i&#61;0;i
if(i
tempB[i]&#61;array[1].charAt(i);
}else{
tempB[i]&#61;&#39;0&#39;;
}
}
}
//小数部分精度大于或等于指定的精度
if(numOfDecimalPart<&#61;array[1].length()){
for(int i&#61;0;i
tempB[i]&#61;array[1].charAt(i);
}
}
if(numOfDecimalPart&#61;&#61;0){
return String.valueOf(tempA)&#43;String.valueOf(tempB);
}
return String.valueOf(tempA)&#43;"."&#43;String.valueOf(tempB);
}
//整数部分大于精度要求(情况4)
if(array[0].length()>numOfIntPart){
//先倒序获取指定位数的整数
for(int i&#61;array[0].length()-1,j&#61;0;(i>&#61;array[0].length()-numOfIntPart&#43;1)&&(j
//System.out.println("<<<
tempA[j]&#61;array[0].charAt(i);
}
char[] tempA1&#61;new char[numOfIntPart];
//调整顺序
for(int j&#61;0,k&#61;tempA.length-1;j&#61;0);j&#43;&#43;){
tempA1[j]&#61;tempA[k];
k--;
}
//小数部分精度小于指定的精度
if(numOfDecimalPart>array[1].length()){
for(int i&#61;0;i
if(i>&#61;array[1].length()){
tempB[i]&#61;&#39;0&#39;;
}else{
tempB[i]&#61;array[1].charAt(i);
}
}
}
//小数部分精度大于或等于指定的精度
if(numOfDecimalPart<&#61;array[1].length()){
for(int i&#61;0;i
tempB[i]&#61;array[1].charAt(i);
}
}
if(numOfDecimalPart&#61;&#61;0){
return String.valueOf(tempA1)&#43;String.valueOf(tempB);
}
return String.valueOf(tempA1)&#43;"."&#43;String.valueOf(tempB);
}
//整数部分小于精度要求(情况5)
if(array[0].length()
//先倒序获取指定位数的整数
char[] tempA1&#61;new char[numOfIntPart];
for(int i&#61;array[0].length()-1,j&#61;0;(i>&#61;numOfIntPart-array[0].length()-(numOfIntPart-array[0].length()))&&(j
tempA1[j]&#61;array[0].charAt(i);
System.out.println("<<<<<
}
//补0
for(int i&#61;array[0].length();i
tempA1[i]&#61;&#39;0&#39;;
System.out.println("<<<<<
}
char[] tempA2&#61;new char[numOfIntPart];
//调整顺序
for(int j&#61;0,k&#61;tempA1.length-1;j&#61;0);j&#43;&#43;){
tempA2[j]&#61;tempA1[k];
k--;
}
//小数部分精度小于指定的精度
if(numOfDecimalPart>array[1].length()){
for(int i&#61;0;i
if(i
tempB[i]&#61;array[1].charAt(i);
}else{
tempB[i]&#61;&#39;0&#39;;
}
}
}
//小数部分精度大于或等于指定的精度
if(numOfDecimalPart<&#61;array[1].length()){
for(int i&#61;0;i
tempB[i]&#61;array[1].charAt(i);
}
}
if(numOfDecimalPart&#61;&#61;0){
return String.valueOf(tempA2)&#43;String.valueOf(tempB);
}
return String.valueOf(tempA2)&#43;"."&#43;String.valueOf(tempB);
}
//情况(6)
if((array[0].length()
for(int i&#61;0; is &#61; "0"&#43;s ;
}
for(int i &#61; 0 ; i s &#61; s&#43;"0" ;
}
return s;
}
return null;
}
/**
* &#64;param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s &#61; "1234.123";
s &#61; AdjustmentDouble.adjustDouble(s, 5, 6);
System.out.println(s);
}
}
标签&#xff1a;
版权申明&#xff1a;本站文章部分自网络&#xff0c;如有侵权&#xff0c;请联系&#xff1a;west999com&#64;outlook.com
特别注意&#xff1a;本站所有转载文章言论不代表本站观点&#xff01;
本站所提供的图片等素材&#xff0c;版权归原作者所有&#xff0c;如需使用&#xff0c;请与原作者联系。