【问题标题】:Convert double to Int, rounded down将 double 转换为 Int,向下舍入
【发布时间】:2012-05-04 01:31:00
【问题描述】:

如何将double 值转换为int,执行以下操作:

Double If x = 4.97542. Convert to int x = 4.

Double If x = 4.23544. Convert to int x = 4.

也就是说,答案总是向下取整。

【问题讨论】:

    标签: java type-conversion rounding


    【解决方案1】:

    如果您明确地将double转换int,小数部分将被截断。例如:

    int x = (int) 4.97542;   //gives 4 only
    int x = (int) 4.23544;   //gives 4 only
    

    此外,您还可以使用Math.floor() 方法对值进行四舍五入,以防您希望返回double 值。

    【讨论】:

    • “丢失十进制值”是什么意思?它是否提供与调用 Math.floor() 相同的号码?
    • Double 不是 Integer,因此强制转换不起作用。注意 Double 类和 double 原语之间的区别。另请注意,Double 是一个数字,因此它具有 intValue 方法,您可以使用该方法将值作为原始 int 获取。如果您尝试将 Double 转换为 int,您将得到一个转换异常: java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer
    【解决方案2】:

    如果双精度是 Double 大写 D(盒装原始值):

    Double d = 4.97542;
    int i = (int) d.doubleValue();
    
    // or directly:
    int i2 = d.intValue();
    

    如果双精度已经是一个原始的double,那么你只需转换它:

    double d = 4.97542;
    int i = (int) d;
    

    【讨论】:

    • 你能告诉我 Double 和 double 有什么区别吗?
    • double 是原始浮点值。 Double 是 Java 对象。
    【解决方案3】:
    double myDouble = 420.5;
    //Type cast double to int
    int i = (int)myDouble;
    System.out.println(i);
    

    双精度值是 420.5,应用程序打印出整数值 420

    【讨论】:

      【解决方案4】:

      使用Doubledouble 的另一个选项是使用Double.valueOf(double d).intValue();。简单干净

      【讨论】:

        【解决方案5】:

        我认为我的输出更好,尤其是对于双数据类型排序。

        虽然这个问题已被标记为已回答,但也许这会对其他人有所帮助;

        Arrays.sort(newTag, new Comparator<String[]>() {
                 @Override
                 public int compare(final String[] entry1, final String[] entry2) {
                      final Integer time1 = (int)Integer.valueOf((int) Double.parseDouble(entry1[2]));
                      final Integer time2 = (int)Integer.valueOf((int) Double.parseDouble(entry2[2]));
                      return time1.compareTo(time2);
                 }
            });
        

        【讨论】:

          猜你喜欢
          • 2015-01-22
          • 1970-01-01
          • 2016-05-23
          • 2014-06-15
          • 2012-01-13
          • 2011-09-17
          • 2012-10-28
          • 1970-01-01
          • 2011-05-10
          相关资源
          最近更新 更多