/**
* 把两个字符类型的参数,转换成double类型进行比较。
* 因为,double类型的精度问题,所以,用程序实现。
* @param a 传入的参数a
* @param b 传入的参数b
* @return a>b return 1
* a=b return 0
* a<b return -1
*/
public int compareDouble(String a, String b){
/*第一步比较两个数正负,两种方案,第一种,转换成double类型后与0相比。
* 第二种,截取字符前是否有"-"
* 使用第一种方案
*/
double a_double = Double.valueOf(a);
double b_double = Double.valueOf(b);
if(!a.contains(".")){
a+=".0";
} if(!b.contains(".")){
b+=".0";
}
if(a_double > 0 && b_double < 0){
return 1;
}else if(a_double < 0 && b_double > 0){
return -1;
}
/*同时为正数的情况比较*/
else if(a_double >= 0 && b_double>=0){
//先比较整数,在比较小数
String a_integer = a.split("\\.")[0];
String a_float = a.split("\\.")[1];
String b_integer = b.split("\\.")[0];
String b_float = a.split("\\.")[1];
int integer_a_result = compareEveryData(a_integer,b_integer);
//只有当结果为0的时候才比较小数
if(integer_a_result==0){
int float_a_result = compareEveryData(a_float,b_float);
return float_a_result;
}else{
return integer_a_result;
}
}
/*同时为负数的情况比较*/
else{
//先比较整数,在比较小数
String a_integer = a.split("\\.")[0];
String a_float = a.split("\\.")[1];
String b_integer = b.split("\\.")[0];
String b_float = a.split("\\.")[1];
int integer_a_result = compareEveryData(a_integer,b_integer);
//只有当结果为0的时候才比较小数
if(integer_a_result==0){
int float_a_result = compareEveryData(a_float,b_float);
return -float_a_result;
}else{
return -integer_a_result;
}
}
}
/**
* 比较两个数的大小,不区分正负,不区分小数
* @param dataOne
* @param dataTwo
* @return dataOne > dataTwo return true else return false;
*/
public int compareEveryData(String dataOne, String dataTwo){
if(dataOne == null && dataTwo == null){
return 0;
}else if(dataOne == null && dataTwo != null ){
return -1;
}else if(dataOne != null && dataTwo == null){
return 1;
}
else if(dataOne.length()>dataTwo.length()){
return 1;
}else if (dataOne.length() < dataTwo.length())
{
return -1;
}else{
for(int i = 0 ; i< dataOne.length() ; i++){
int a_temp = dataOne.charAt(i);
int b_temp = dataTwo.charAt(i);
if(a_temp>b_temp){
return 1;
}else if(a_temp < b_temp){
return -1;
}
}
return 0;
}
}