如何防止java表单自动舍入值
我试图阻止java对用户输入值的结果进行舍入。这是密码如何防止java表单自动舍入值,java,Java,我试图阻止java对用户输入值的结果进行舍入。这是密码 import java.util.Scanner; public class questions { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); System.out.print("enter
import java.util.Scanner;
public class questions {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.print("enter two integers");
int firstNumber = in.nextInt();
int secondNumber = in.nextInt();
System.out.print("the average is = ");
System.out.println((firstNumber + secondNumber)/2);
// end
}
}
|例如,当我将5和6作为输入时,它输出5而不是5.50您可以在.nextDouble()中使用
,然后相应地处理它
像这样:
import java.util.Scanner;
public class questions {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.print("enter two integers");
double firstNumber = in.nextDouble();
double secondNumber = in.nextDouble();
double divideresult = ((firstNumber+secondNumber)/2);
System.out.print("the average is = ");
System.out.println(divideresult);
// end
}
}
结果:
输入
输出
您可以使用如下所示的NumberFormat在末尾强制零:
DecimalFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(divideresult));
哪些产出:
5.50
Java没有舍入您的值。请查整数除法。一个快速解决方法是除以2.0而不是2。int/int=int
,因此(5+6)=11
和11/2=5`(因为5.5被截断为5)。我的答案回答了你的问题吗?不要使用浮点
,除非你有非常具体的理由使用非常有限的浮点
。谢谢。更新了代码。Double占用更多的空间,但在计算过程中更精确,float占用更少的空间,但精度更低。除非有大量的值,否则根本不考虑空间。默认情况下,应始终使用double
,以防止精度出现意外问题,除非您特别需要节省空间,并且已经充分考虑了float
是否足够精确,可以存储所有需要的值。由于空间很少是一个问题,不要浪费时间来考虑<代码>浮点会做什么,只要使用<代码>双< /代码>。这是真的,在这个特定的情况下,我考虑了浮点,因为输入是整数,因此结果将是1的精度。但我同意使用double而不是float的最佳实践。“输入是整数,因此结果将是1精度”嗯?整数输入123456789
和2222222
应产生172839505.5
,而不是通过float
获得的172839504
——证明您应该始终使用double
来防止/限制精度问题,除非您绝对需要使用float
。
DecimalFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(divideresult));
5.50
import java.util.Scanner;
public class questions {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.print("enter two integers");
int firstNumber = in.nextInt();
int secondNumber = in.nextInt();
System.out.print("the average is = ");
System.out.println((double) (firstNumber + secondNumber) / 2);
// end
}
}