Java 我是否正确使用了BigDecimal类?我真的需要有人仔细检查我的代码,以确保我';我不会犯新手错误

Java 我是否正确使用了BigDecimal类?我真的需要有人仔细检查我的代码,以确保我';我不会犯新手错误,java,bigdecimal,Java,Bigdecimal,这件事我已经做了几天了。在出现可笑的双重错误后,似乎使用BigDecimal才是正确的选择。代码如下: 我以前从未使用过BigDecimal,所以我希望这里的人能仔细检查一下,确保没有任何愚蠢的错误。不过,我已经尽可能多地检查过了 编辑:对不起,这是模糊的。所以,我使用的是double原语类型,但是当然,执行类似for的操作(double I=0;I

这件事我已经做了几天了。在出现可笑的双重错误后,似乎使用BigDecimal才是正确的选择。代码如下:

我以前从未使用过BigDecimal,所以我希望这里的人能仔细检查一下,确保没有任何愚蠢的错误。不过,我已经尽可能多地检查过了


编辑:对不起,这是模糊的。所以,我使用的是double原语类型,但是当然,执行类似for的操作(double I=0;I<1;I+=0.05)会给I带来不精确的值(您会得到像.049999999或.249999999这样的值)。所以我换成了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。

您是否收到一条特定的错误消息或怀疑是由于BigDecimal导致的错误结果?这个问题有点模糊,它可能有助于包含一些关于你在使用BigDecimal时遇到什么麻烦的更多细节。你能把这个问题说得更具体些吗?要求我们在没有其他上下文的情况下检查您的100行程序并没有多大帮助。做些工作,把你的问题删减一下。看起来你可能想要。StackOverflow用于特定的编程问题。您甚至不告诉我们这个程序应该做什么。投票结束。请在@Mark上查看这个博客,你的意思可能是,嗯,出于某种原因,我发布了一个旧版本。不管怎样,我的代码编译得很好。我不是要寻找Java错误。我要求有BigDecimal经验的人确保我正确使用它(即,我没有失去精度)。如果可以的话,我还不如把它关上