Мне нужно включить double в int в Java, но числовое значение должно всегда округляться. то есть 99,99999999 → 99
Как применить двойную к int в Java, округляя ее?
Ответ 1
Приведение к int неявно отбрасывает любое десятичное число. Не нужно вызывать Math.floor() (при условии положительных чисел)
Просто typecast с (int), например:
System.out.println((int)(99.9999)); // Prints 99
Говоря это, оно имеет другое поведение от Math.floor
, которое округляется к отрицательной бесконечности (@Chris Wong)
Ответ 2
Чтобы применить двойное к 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.
Ответ 3
(целое) 99,99999
Будет 99. Приведение двойного к int не округляет, оно отбрасывает часть дроби.
Ответ 4
Math.floor(n)
где n - двойное. Кажется, это будет возвращать двойной, поэтому убедитесь, что вы его выведете после.
Ответ 5
Это прекрасно работает int i = (int) dbl;
Ответ 6
new Double(99.9999).intValue()
Ответ 7
попробуйте с этим, это просто
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
может быть этот код поможет вам.
Ответ 8
Попробуйте использовать Math.floor.
Ответ 9
В этом вопросе:
1. Преобразование двойного числа в целое - очень простая задача.
2.Но не округляя двойное значение до ближайшего десятичного числа. Поэтому кастинг можно сделать так:
double d=99.99999999;
int i=(int)d;
System.out.println(i);
и он напечатает 99
, но округление не было сделано.
Таким образом, для округления мы можем использовать,
double d=99.99999999;
System.out.println( Math.round(d));
Это напечатает вывод 100
.
Ответ 10
Private static DecimalFormat input =new DecimalFormat() ;
System.out.println("" +input.format("%.2f",inputvalue);
)