Как привести double к int в Java, округлив его вниз?
Мне нужно привести double к int в Java, но числовое значение всегда должно округляться. т. е. 99.99999999 -> 99
8 ответов:
приведение к int неявно отбрасывает любое десятичное число. Не надо звонить в математику.этаж () (предполагая положительные числа)
просто введите с помощью (int), например:
System.out.println((int)(99.9999)); // Prints 99
это, как говорится, имеет другое поведение от
Math.floor
который округляется в сторону отрицательной бесконечности (@Chris Wong)
чтобы привести double к int и округлить его до ближайшего целого числа (т. е. В отличие от типичных
(int)(1.8)
и(int)(1.2)
, который будет как "округлить вниз" к 0 и вернуться1
),просто добавьте 0,5 кdouble
что вы будете относиться кint
.например, если у нас есть
double a = 1.2; double b = 1.8;
затем следующие выражения типизации для x и y и вернут округленные значения (
x = 1
иy = 1
):int x = (int)(a); // This equals (int)(1.2) --> 1 int y = (int)(b); // This equals (int)(1.8) --> 1
но, добавив 0,5 к каждому, мы получим округляется до ближайшего целого числа, результат что мы можем пожелать в некоторых случаях (
x = 1
иy = 2
):int x = (int)(a + 0.5); // This equals (int)(1.8) --> 1 int y = (int)(b + 0.5); // This equals (int)(2.3) --> 2
как маленькая заметка этот метод также позволяет контролировать порог, в котором
double
округляется вверх или вниз по(int)
типажей.(int)(a + 0.8);
для приведение. Это только в
(int)a + 1
всякий раз, когда десятичные значения больше или равны 0,2. То есть, добавив 0,8 кdouble
непосредственно перед типизацией 10.15 и 10.03 будут округлены до 10 при(int)
типирование, но 10.23 и 10.7 будут округлены до 11.
Math.floor(n)
где n-двойник. Это на самом деле вернет двойной, кажется, поэтому убедитесь, что вы набрали его после.
попробуйте с этим, это просто
double x= 20.22889909008; int a = (int) x; this will return a=20
или попробуйте с этим: -
Double x = 20.22889909008; Integer a = x.intValue(); this will return a=20
или попробуйте с этим: -
double x= 20.22889909008; System.out.println("===="+(int)x); this will return ===20
может быть, этот код поможет вам.