// 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 {
///
}
该陈述不起作用,条件失败。
将浮点数与整数值进行比较的正确方法是什么?
答案 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 {
///
}
}
度过愉快的一天