基本上,我不明白为什么当4.35 * 100 = 435.0被转换为435的int时,下面的代码会输出434,对吗?Java舍入问题
这是什么简单的解释,这是一个经常出现的问题?
你会如何解决这个问题?
public class RoundOffDemo {
public static void main(String[] args) {
double price = 4.35;
int cents = (int) (100 * price); // Should be 435
System.out.println(cents); // Prints 434!
}
}
可能的重复[浮点运算不能在Java中产生精确的结果](http://stackoverflow.com/questions/1661273/floating-point-arithmetic-not-产生不精确的-成果在-java的)。还有至少一百个其他问题。 – dan04 2011-12-28 23:46:22