Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Математика, курс Java 
:(
    Опции темы
SP5B
  Дата 10.11.2014, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.11.2014

Репутация: нет
Всего: нет



Я тут прохожу курс "начало Java" здесь на сайте и в разделе ооп столкнулся с одним примером, когда начал смотреть код тщательней ... вообщем к вопросу 
Код

 double x ;
      double y;
     
      double course = 90;
      x =   Math.cos(course / 180 * Math.PI);
      y =   Math.cos(90 / 180 * Math.PI);
      System.out.println(x);
      System.out.println(y);

Результат 
6.123233995736766E-17
1.0
Почему так ? Когда делаю int course =90; работает все правильно. 
PM MAIL   Вверх
jManiak
Дата 10.11.2014, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 6.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата

1. Если операция выполняется над двумя целочисленными операндами и один из них имеет тип long, результат будет иметь тип long. 
2. Если операция выполняется над двумя целочисленными операндами и НИ один из них НЕ имеет типа long, результат будет иметь тип int.
3. Если операция выполняется над целочисленным операндом и вещественным операндом, то результат будет иметь соответствующий вещественный тип.
4. Если операция выполняется над операндом типа double  и операндом типа float, то результат будет иметь тип double.



PM MAIL ICQ   Вверх
SP5B
Дата 10.11.2014, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.11.2014

Репутация: нет
Всего: нет



Да это понятно... 
а вот почему тут 6 :
Код

x =   Math.cos(course / 180 * Math.PI);

не понятно.
PM MAIL   Вверх
sQu1rr
Дата 10.11.2014, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 1
Всего: 13



Цитата(SP5B @  10.11.2014,  02:24 Найти цитируемый пост)
а вот почему тут 6 :

Не 6 а 6 в степени -17 что ~= 0, изучайте детали IEEE 754 или подобные (в java если не ошибаюсь какойто свой стандарт, но это сути не меняет)
PM MAIL Skype GTalk   Вверх
Mirkes
Дата 11.11.2014, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 7
Всего: 17



Кстати, замечу, что правильным является первый из приведенных вами ответов, поскольку 6e-17 это почти ноль. А вот когда вы используете целочисленный курс и во втором вычислении результат не правильный поскольку косинус 90 равен нулю!


--------------------
Mirkes
PM MAIL   Вверх
Michael.de
Дата 11.11.2014, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 22.3.2005
Где: Deutschland

Репутация: нет
Всего: 9



Mirkes, только что проверил в консоли:
Код

6.123233995736766E-17
1.0

эээ... но как такое возможно?
А ответ такой: 90 / 180 = 0, т.к. оба числа int. При перемножении 0 (int) и Math.PI (double) получится .0 (теперь уже double).
PM MAIL   Вверх
SP5B
Дата 11.11.2014, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.11.2014

Репутация: нет
Всего: нет



sQu1rr, Спасибо, все верно подметил .. это ближе к 0;

Michael.de, Огромное спасибо за разъяснение. Теперь все понятно .

Как я понял результаты cos ,sin и т.д  выводятся в радианах поэтому  .../ 180 * Math.PI
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0646 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.