浏览 4856 次
锁定老帖子 主题:判断double大小
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-05
最后修改:2008-11-26
/** * 把两个字符类型的参数,转换成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; } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |