论坛首页 入门技术论坛

判断double大小

浏览 4856 次
精华帖 (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;
		 } 
	}

 

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics