【问题标题】:round off a double number to a specied pattern将双精度数四舍五入为指定模式
【发布时间】:2015-06-04 12:26:48
【问题描述】:

我对这个问题感到困惑.. 输入一个双精度值,例如 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.. 请帮忙

【问题讨论】:

标签: java double


【解决方案1】:

方法

Math.round(double) 

返回一个 long,简单地将其转换为 double 不会恢复精度

作为同行的 javadocs

http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#round(double)

返回最接近参数的长整数,并向上取整

您也可以尝试使用NumberFormat

【讨论】:

    【解决方案2】:

    在这种情况下你可能会很棘手。 试试吧,

    num=num*10;
    double new_num=((double)Math.round(num))/10;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 2013-07-22
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多