Я хочу преобразовать число 2.55 в 255 в Java.
Я пробовал следующий код, но вместо этого я получаю 254 из 255 :
final Double tmp = 2.55; final Double d = tmp * 100; final Integer i = d.intValue();
Как правильно достичь этого?
вы должны округлить это значение, и вы можете использовать примитивы для этого .. то есть использовать примитивный double вместо класса-оболочки Double
final double tmp = 2.55; final double d = tmp * 100; long i = Math.round(d); System.out.println("round: "+ i);
Это просто с помощью BigDecimal
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
значение d составляет 254,9999999999997. это проблема с вычислениями с плавающей запятой. Вы могли бы использовать
i = Math.round(d);
чтобы получить 255.
--- удалить дно .. было не так