Java程序中的小数点太多

时间:2015-02-03 03:41:39

标签: java formatting decimal

我最近开始了我的第一个Java编程学期,并在一项任务中陷入僵局。分配是请求用户输入矩形上的点。用户必须输入高度,宽度,左下角x坐标和左下角y坐标。我终于设法编写了程序,编译时没有错误。我的问题是,当我使用带小数的数字(即-4.3,8.7等)时,左上角x和右上角x坐标的小数点太多。

为什么这些唯一的点显示太多小数?我只需要一个小数点(5.6,3.4等)。

我会告诉你我的代码和输出。如果我的代码很草率,我道歉。我对此非常陌生:

    import java.util.Scanner;

public class rectanglePoints {

public static void main(String [] args)

{


    Scanner input = new Scanner(System.in);

    System.out.print("Please enter bottom/left x coordinate: ");

    double xbottomleft = input.nextDouble();

    System.out.print("Please enter bottom/left y coordinate: ");

    double ybottomleft = input.nextDouble();

    System.out.print("Please enter width: ");

    double width = input.nextDouble();

    System.out.print("Please enter height: ");

    double height = input.nextDouble();


    System.out.println("Bottom Left: (" + xbottomleft + "," + ybottomleft + ")");

    double xbottomright = xbottomleft;
    double ybottomright = ybottomleft + width;
    double xtopleft = xbottomleft + height;
    double ytopleft = ybottomleft;
    double xtopright = xtopleft;
    double ytopright = ytopleft + width;

    System.out.println("Bottom Right: (" + xbottomright + "," + ybottomright + ")");
    System.out.println("Top Left: (" + xtopleft + "," + ytopleft + ")");
    System.out.println("Top Right: (" + xtopright + "," + ytopright + ")");




}

}

以下是使用随机选择的数字作为输入时输出显示的内容:

请输入bottom / left x坐标:-4.3 请输入底部/左侧y坐标:3.5 请输入宽度:7.6 请输入身高:8.7 左下:( -4.3,3.5) 右下:(-4.3,11.1) 左上角:(4.3999999999999995,3.5) 右上:(4.3999999999999995,11.1)

这两个坐标有什么问题?我已经研究了格式化,但我不知道如何在我的代码中实现它同时打印文本,例如"右下角:","左上角:"等

2 个答案:

答案 0 :(得分:2)

你正在使用双打,这是众所周知的不完全。由于并非所有值都可以用双精度表示,因此有时会近似值,如此处所示。如果想要更准确的结果,请尝试使用定点表示而不是浮点表示。

答案 1 :(得分:1)

  

这两个坐标有什么问题?

没什么。不幸的是how floating point numbers work

  

我看过格式化,但我不知道如何在我的代码中实现它同时打印文本

你可以说

System.out.format("Bottom Right: (%2.3f,%2.3f)%n", xbottomright, ybottomright);