判断double大小

/**
	 * 把两个字符类型的参数,转换成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;
		 } 
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值