Преобразовать 2 десятичных числа в целое - PullRequest
3 голосов
/ 21 марта 2019

Я хочу преобразовать число 2.55 в 255 в Java.

Я пробовал следующий код, но вместо этого я получаю 254 из 255 :

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

Как правильно достичь этого?

Ответы [ 3 ]

3 голосов
/ 21 марта 2019

вы должны округлить это значение, и вы можете использовать примитивы для этого .. то есть использовать примитивный double вместо класса-оболочки Double

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

    System.out.println("round: "+ i);
2 голосов
/ 21 марта 2019

Это просто с помощью 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 голос
/ 21 марта 2019

значение d составляет 254,9999999999997. это проблема с вычислениями с плавающей запятой. Вы могли бы использовать

i = Math.round(d);

чтобы получить 255.

--- удалить дно .. было не так

...