Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对点具有双重值_Java_Double - Fatal编程技术网

Java 对点具有双重值

Java 对点具有双重值,java,double,Java,Double,嗨 我有一个UI,它有一个面板,您可以使用鼠标在上面放置一些点,这是它的代码: double x = evt.getX(); double y = evt.getY() + 20; Graphics g = getGraphics(); g.setColor(Color.black); g.fillOval((int) x, (int) y, 10, 10); Point point = new Point(x, y); pointList

嗨 我有一个UI,它有一个面板,您可以使用鼠标在上面放置一些点,这是它的代码:

    double x = evt.getX();
    double y = evt.getY() + 20;
    Graphics g = getGraphics();
    g.setColor(Color.black);
    g.fillOval((int) x, (int) y, 10, 10);
    Point point = new Point(x, y);
    pointList.add(point);
正如您看到的,我的“x”字段和“y”字段具有双重类型,但当我打印这些点时,它们的值将是int,我如何保持它们的值并在具有双重类型的函数中使用它们。 当我打印它们时:

[120.0 ,134.0]
[345.0,785.0]

您的双精度值将被转换回整数。
除了编写自己的toString方法(可能是通过扩展Point),您对此无能为力。

试试看,面板上的位置总是整数,因为getX和getY会返回整数。不能单击半个像素。;)


您存储的实际上是双精度的。这就是为什么它说的是“120.0”,而不仅仅是“120”。如果将一个整数存储到浮点类型(如double),那么它将被存储为该整数的浮点等价物(这与将“.0”放在末尾相同)。因为存储在其中的值始终是整数,所以在double中始终会有一个整数(除非对其进行其他数学处理,从而使其发生变化)

您的意思是对这些点使用double type是没有用的??同样在诸如减号之类的算术运算中,它将返回int type或0.23?@user472221,给出您的示例代码,使用double是没有用的。如果您打算在舍入问题可能很严重的计算中使用这些值,则使用double非常有用。在算术运算中,它返回的类型将取决于特定运算符和表达式中的其他类型。如果你总是使用双打,那么你最终会得到双打。如果混合使用double和integer,那么自动类型转换将意味着最终结果的确定要复杂一些。