Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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 - Fatal编程技术网

如何防止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

我试图阻止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 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
    }
}