我已经为此工作了几天了。在得到荒谬的双重错误之后,使用BigDecimal似乎是可行的方法。代码如下:http://pastebin.com/rpbNJnHH
我以前从来没有使用过BigDecimal,所以我希望这里有人可以检查一下,确保没有任何愚蠢的错误。我已经把我能确定的都检查过了。
编辑:对不起,这是模糊的。所以,我使用的是double基本类型,当然,我要做的是for(double I = 0;我& lt;1;I += 0.05)将给出I的不精确值(您将得到像。0499999999或。24999999999999这样的值)。所以我换成了BigDecimal。然而,我以前从未使用过BD,所以我希望有人可以查看我的代码,并确保我正确使用它(即我没有在某个地方失去精度)。由于我不确定这段代码是如何编译的。
for (MyPoint point : prevU.keySet()) {
BigDecimal x = point.getX();
BigDecimal t = point.getT();
}
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.BLUE);
g2.fillOval(x, t, 1, 1);
x和t必须是int
值并且在作用域中。
我建议您从编译和正确运行的非常简单的东西开始,然后慢慢添加。如果你试图一次改变太多,你可能会以压倒性的混乱结束。
比起使用double或BigDecimal,我会使用int值,因为这是你在一天结束时需要的类型,除非你的屏幕上下超过20亿像素,否则你不需要long, double或BigDecimal。