Почему приведение этой переменной дает мне длинный тип данных, содержащий экспоненциальную запись?JAVA

Программисты JAVA общаются здесь
Anonymous
Почему приведение этой переменной дает мне длинный тип данных, содержащий экспоненциальную запись?

Сообщение Anonymous »

Код: Выделить всё

public class HelloWorld {
public static void main(String[] args) {
long ageEarth = 4543000000L;
System.out.println(ageEarth);

double ageEarth1 = ageEarth;
System.out.println(ageEarth1);

ageEarth1 = (long) ageEarth1;
System.out.println(ageEarth1)

}
Поиграемся со значением 4543000000 и передадим его в double и снова в long дает мне


научное обозначение: 4.543E9


но экспоненциальная запись представляет собой число с плавающей запятой, а long принимает только целые числа, что здесь происходит?

//// ///
РЕДАКТИРОВАТЬ:

Я применяю код, который вы мне рассказали, ребята, и даю нам то, что мы ожидаем, но:

Код: Выделить всё

    long ageEarth = 4543000000L;
System.out.println(ageEarth);

double ageEarth1 = ageEarth;
System.out.println(ageEarth1);

ageEarth1 = (long) ageEarth1;
System.out.println(ageEarth1)

long ageEarth2 = (long) ageEarth1;
System.out.println(ageEarth2);
Я не понимаю, что третий напечатанный файл System.out.println(ageEarth1); это когда преобразуется в ageEarth1 = (long) ageEarth1 ; результат должен быть целым числом, верно? Так почему же даются научные обозначения?

Изображение


Что вы имеете в виду под сокращением данных? Поправьте меня, вы имеете в виду повреждение данных?

4.543E9 = 4543000000

Подробнее здесь: https://stackoverflow.com/questions/611 ... ic-notatio

Вернуться в «JAVA»