2016-12-21 2 views
0
// The given input 
String input = "99999999.99"; 

// We need only 2 decimals (in case of more than 2 decimals is in input) 
Float value = Float.valueOf(input); 
DecimalFormat df = new DecimalFormat("#0.00"); 
input = df.format(value); 
value = new Float(input); 

// Now we have a clear 2 decimal float value 
// Check for overflow 
value *= 100; // Multiply by 100, because we're working with cents 

if (value >= Integer.MAX_VALUE) { 
    System.out.println("Invalid value"); 
} 
else { 
/// 
} 

문이 작동하지 않아 조건이 실패합니다.float 값이 Integer.MAX_VALUE보다 큰지 확인하는 방법?

float와 정수 값을 비교하는 올바른 방법은 무엇입니까?

+0

주를 가지고 Float'는'Integer'의 전체 범위를 처리 할 수있을만큼 좋지 않다'의 정밀도. 돈을 처리하는 경우 가능한 경우 부동 소수점 숫자를 사용하지 않아야합니다. –

답변

3

코드에 아무런 문제가 없습니다. 99999999.99 번 100은 9999999999와 같습니다. 그 값은 max int == 2147483647 (2^31-1)입니다. 더 큰 정수를 저장할 수 있으려면 long을 사용하십시오.

만약 당신의 문제가 아니라면 더 자세히 설명하십시오.

1

이 시도 :

public static void main(final String[] args) { 
    // The given input 
    String input = "99999999.99"; 

    // We need only 2 decimals (in case of more than 2 decimals is in input) 
    Float value = Float.parseFloat(input); 
    DecimalFormat df = new DecimalFormat("#0.00"); 
    DecimalFormatSymbols custom = new DecimalFormatSymbols(); 
    custom.setDecimalSeparator('.'); 
    df.setDecimalFormatSymbols(custom); 
    input = df.format(value); 
    value = new Float(input); 

    // Now we have a clear 2 decimal float value 
    // Check for overflow 
    value *= 100; // Multiply by 100, because we're working with cents 

    if (value >= Integer.MAX_VALUE) { 
     System.out.println("Invalid value"); 
    } else { 
     /// 
    } 
} 

좋은 일을

+0

소수점 구분 기호가 ','이므로 코드에서 예외가 발생합니다. –