Как привести double к int в Java, округлив его вниз?


Мне нужно привести double к int в Java, но числовое значение всегда должно округляться. т. е. 99.99999999 -> 99

8 66

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.

(int)99.99999

будет 99. Приведение двойника к int не округляется, он отбрасывает часть фракции.

Math.floor(n)

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

Это хорошо int i = (int) dbl;

new Double(99.9999).intValue()

попробуйте с этим, это просто

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

может быть, этот код поможет вам.

попробуйте использовать математику.этаж.