Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
dispetch
1 / 1 / 2
Регистрация: 30.09.2013
Сообщений: 89
1

Почему так получилось?

16.03.2016, 13:02. Просмотров 761. Ответов 3
Метки нет (Все метки)

Объясните пожалуйста, почему так получается?

Java
1
2
3
double d = 1000000e100;
        int x = (int) d;
System.out.println("x = " + x);
Ответ:
x = 2147483647

Здесь как бы понятно что long - 64бита, а float - 32бита. Но почему теряется точность?
Java
1
2
3
long l1 = 1234567891234L;
float f1 = l1;
System.out.println("f1 - " + f1);
Ответ:
f1 - 1.23456795E12
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2016, 13:02
Ответы с готовыми решениями:

В ступоре. Почему так?
Есть в классе метод, который выводит индекс элемента в строке. Элемент должен...

java.lang.NullPointerException почему так?
вот код: private String stat; private int istat; ... ......

Почему ObjectMapper работает именно так
У меня есть класс типа JsonResponse в котором есть поле result типа Object....

Объясните почему работает именно так?
Добрый день. Пишу приложение и пытаюсь в меню добавить обработку метода ...

Восх. преобразование(не пойму, почему так)
Вот, допустим такой код: class Super { int number = 0; int get() {...

3
КОП
525 / 382 / 120
Регистрация: 15.08.2010
Сообщений: 1,073
Завершенные тесты: 1
16.03.2016, 13:30 2
Цитата Сообщение от dispetch Посмотреть сообщение
Объясните пожалуйста, почему так получается?
d не влазит в х, поэтому в х ближайшее возможное к d значение.
Цитата Сообщение от dispetch Посмотреть сообщение
Но почему теряется точность?
мб потому что 64 бита не влезут в 32? Ну и потому что мантисса не бесконечная.
0
dispetch
1 / 1 / 2
Регистрация: 30.09.2013
Сообщений: 89
16.03.2016, 13:56  [ТС] 3
d не влазит в х, поэтому в х ближайшее возможное к d значение.
Я просто думал что оно должно не максимум показывать, а перебирать по кругу 4 с чем-то млрд значение. Ну типо как если 128 преобразовать в byte, то получится -128.

Цитата Сообщение от КОП Посмотреть сообщение
мб потому что 64 бита не влезут в 32? Ну и потому что мантисса не бесконечная.
То что 64 бита не влезут в 32 это понятно. Не могу понять причем здесь мантисса? Почему не получается 1.234567891234 ? Может подскажите где можно прочитать как происходит преобразование в битах в данном случае?
0
КОП
525 / 382 / 120
Регистрация: 15.08.2010
Сообщений: 1,073
Завершенные тесты: 1
16.03.2016, 14:07 4
Лучший ответ Сообщение было отмечено dispetch как решение

Решение

Цитата Сообщение от dispetch Посмотреть сообщение
Я просто думал что оно должно не максимум показывать, а перебирать по кругу 4 с чем-то млрд значение. Ну типо как если 128 преобразовать в byte, то получится -128.
это вроде только между целыми типами.
Цитата Сообщение от dispetch Посмотреть сообщение
Не могу понять причем здесь мантисса? Почему не получается 1.234567891234 ?
хотя бы вот мантисса содержит определенное кол-во значащих битов. Само число 1234567891234 требует 41 бит для представления, как его запихнуть в float то? Потому и обрезает, и еще оставляет место для експоненты и знака
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2016, 14:07

Простая програмка. Что не так? почему полностью не работает?
Когда запускаю программу, она работает до ввода choice, а после пытается...

Почему ejbSelect так долго работает?!?
Подскажите пожалуйста, почему у меня некоторые ejbSelect так долго выполняются...

Магия Java или объясните, почему так
Здравствуйте, в процессе разработки, подбирая различный способы обработки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru