我最近开始了我的第一个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)
这两个坐标有什么问题?我已经研究了格式化,但我不知道如何在我的代码中实现它同时打印文本,例如"右下角:","左上角:"等
答案 0 :(得分:2)
你正在使用双打,这是众所周知的不完全。由于并非所有值都可以用双精度表示,因此有时会近似值,如此处所示。如果想要更准确的结果,请尝试使用定点表示而不是浮点表示。
答案 1 :(得分:1)
这两个坐标有什么问题?
没什么。不幸的是how floating point numbers work。
我看过格式化,但我不知道如何在我的代码中实现它同时打印文本
你可以说
System.out.format("Bottom Right: (%2.3f,%2.3f)%n", xbottomright, ybottomright);