如何知道浮点值是否大于Integer.MAX_VALUE?

时间:2016-12-21 11:10:39

标签: java floating-point integer compare

// 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 {
///
}

该陈述不起作用,条件失败。

将浮点数与整数值进行比较的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

您的代码没有任何问题。 99999999.99乘以100等于9999999999。 它比max int == 2147483647(它的2 ^ 31 -1)大。如果您希望能够存储更大的整数,请使用long

如果不是你的问题,请进一步详细说明。

答案 1 :(得分: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 {
        ///
    }
}

度过愉快的一天