将2十进制转换为整数

问题描述 投票:3回答:3

我想在java中将数字2.55转换为255。

我尝试了以下代码,但我得到的是254而不是255:

final Double tmp = 2.55;
final Double d = tmp * 100;
final Integer i = d.intValue();

实现这一目标的正确方法是什么?

java double rounding
3个回答
3
投票

你必须舍入该值,并且可以使用原语...即使用原始double而不是包装类Double

    final double tmp = 2.55;
    final double d = tmp * 100;
    long i = Math.round(d);

    System.out.println("round: "+ i);

2
投票

使用BigDecimal很简单

    BigDecimal bg1 = new BigDecimal("123.23");
    BigDecimal bg2 = new BigDecimal("12323");

    bg1= bg1.movePointLeft(-2); // 3 points right

    bg2= bg2.movePointLeft(3);  // 3 points left


    System.out.println(bg1);     //12323

    System.out.println(bg2);     //12.323

1
投票

d的值是254.999999999997。这是浮点计算的问题。你可以用

i = Math.round(d);

得到255。

---删除底部..错了

© www.soinside.com 2019 - 2024. All rights reserved.