将双数字舍入为特定模式

时间:2015-06-04 04:18:14

标签: java double

我对此问题感到困惑..给出了一个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 .. 请帮忙

2 个答案:

答案 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;

这是实现您想要的更智能的方式。您可以乘以并除以相同的数字来设置要舍入的小数位