float a = (float) 3.32 ;
float b = (float) 4.32 ;
System.out.println(b%a);
输出为1.0000002Java的浮点模误差
为什么?
float a = (float) 3.32 ;
float b = (float) 4.32 ;
System.out.println(b%a);
输出为1.0000002Java的浮点模误差
为什么?
首先如何声明浮点值作为变量?
float val=3.23f;
关于您的结果。 这是float
的典型性质。
如何得到正确答案?尝试这种方式
BigDecimal a = new BigDecimal("3.32") ;
BigDecimal b = new BigDecimal("4.32") ;
System.out.println(b.divideAndRemainder(a)[1]); // 1st element is remainder
输出地说:
1
您可能需要阅读有关divideAndRemainder()
@downvoter,无法看到您的评论。 – 2014-09-10 09:29:11
我已投稿风水:) – 2014-09-10 09:33:49
浮点类型是根据其性质不准确的。这样的小错误是不可避免的。 – Bohemian 2014-09-10 09:22:54
http://en.wikipedia.org/wiki/Floating_point – user1516873 2014-09-10 09:23:06
请参阅[每个程序员应该了解的浮点数](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html )和http://floating-point-gui.de/basic/ – 2014-09-10 09:28:09