我对此问题感到困惑..给出了一个double值作为输入,例如7.2 现在输出将是7.3和8.如果输入是7.2.3,那么输出将是7.2.4和7.3.3。 我到目前为止尝试过以下代码
public class StrTest3 {
public static void main(String args[]){
double num=0;
double counter=0.0;
Scanner sc=new Scanner(System.in);
System.out.println("Enter number: ");
num=sc.nextDouble();
double num2=(double)Math.round(num);
}}
但其7.2的输出为7.0 .. 请帮忙
答案 0 :(得分:1)
方法
Math.round(double)
返回一个long,简单地将它转换为double将无法恢复精度
与javadocs同行
http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#round(double)
返回与参数最接近的长度,并将关系向上舍入
您也可以尝试使用NumberFormat
答案 1 :(得分:0)
在这种情况下,你可能会很棘手。 尝试,
num=num*10;
double new_num=((double)Math.round(num))/10;
这是实现您想要的更智能的方式。您可以乘以并除以相同的数字来设置要舍入的小数位