Почему у меня значение Current Asia Population выдается с буквой Е,да и вообще неправильно?
package casting02;
public class Casting02 {
public static void main(String[] args) {
long currentWorldPop = 7_000_000_000L;
System.out.println("Current World Population: " +currentWorldPop);
//World population in 1950, Source: United Nations Population Division
//2.52 Billion
int africaPop = 221_000_000;
long asiaPop = 1_402_000_000;
int europePop = 547_000_000;
int americasPop = 339_000_000;
int oceanaPop = 13_000_000;
System.out.println("World Population in 1950: "
+(africaPop +asiaPop +europePop +americasPop +oceanaPop));
//The current population of Asia is an estimated 60% of the world population
double percentAsia = (float)0.6;
double currentAsiaPop =currentWorldPop * percentAsia;
System.out.println("Current Asia Population: " +currentAsiaPop);
}
}
Ответы (3 шт):
Автор решения: Vladimir Yarovoy
→ Ссылка
Используйте BigDecimal, вот пример:
long currentWorldPop = 7_000_000_000L;
BigDecimal percentAsia = new BigDecimal("0.6");
BigDecimal currentAsiaPop = percentAsia.multiply(BigDecimal.valueOf(currentWorldPop));
System.out.println("Current Asia Population: " + currentAsiaPop);
Или
long currentWorldPop = 7_000_000_000L;
double percentAsia = 0.6D;
double currentAsiaPop = currentWorldPop * percentAsia;
System.out.println("Current Asia Population: " + new DecimalFormat("#").format(currentAsiaPop));
Неправильно считалось, потому что вы при определении percentAsia делали приведение типов, в этом случае теряется точность.
Автор решения: Smetana Po Aktsii
→ Ссылка
Все заработало,когда я изменил строчку таким образом long currentAsiaPop =(long)(currentWorldPop * percentAsia); кто-нибудь может объяснить как так получилось?
Автор решения: insolor
→ Ссылка
Можно выводить через System.out.printf:
System.out.printf("Current Asia Population: %.2f\n", currentAsiaPop);
Вместо %.2f при выводе подставится ваше число, в данном случае выведется в формате с точкой с 2 знаками после точки (например, 4200000166.89).
Другой вариант, форматировать строку с помощью класса MessageFormat:
System.out.println(MessageFormat.format("Current Asia Population: {0, number, #.##}", currentAsiaPop));
Вывод будет аналогичный.