Мені потрібно передати подвійне значення int в Java, але числове значення завжди повинно округлятися вниз. тобто 99,99999999 -> 99
Мені потрібно передати подвійне значення int в Java, але числове значення завжди повинно округлятися вниз. тобто 99,99999999 -> 99
Відповіді:
Трансляція до int імпліцитно скидає десятковий знак. Не потрібно викликати Math.floor () (за умови позитивних чисел)
Просто введіть текст за допомогою (int), наприклад:
System.out.println((int)(99.9999)); // Prints 99
Math.floorЗважаючи на це, він має іншу поведінку, яка веде до негативної нескінченності (@Chris Wong)
Math.floor це справляє різний результат для негативних чисел , ніж просте приведення типів.
System.out.println((long)(9.9999e300));
BigDecimalта RoundingModeкласи використовує ROUND_DOWNдля округлення до нуля та ROUND_FLOORдля округлення до негативно-нескінченність.
Щоб додати подвійну до int, і округлити її до найближчого цілого числа (тобто на відміну від типового (int)(1.8)і (int)(1.2), яке одночасно буде "округлятись вниз" до 0 і повертати 1), просто додайте 0,5 до того, doubleякий ви введете до anint .
Наприклад, якщо ми маємо
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.
System.out.println(""+ (int)(-0.8d + 0.5))друкує 0, а не -1, як очікувалося
Це чудово працює int i = (int) dbl;
спробуйте з цим, це просто
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
можливо, цей код вам допоможе.
У цьому питанні:
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.