Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.09.2008, 20:54
konstantin.noir вне форума Посмотреть профиль Отправить личное сообщение для konstantin.noir Найти все сообщения от konstantin.noir
  № 1  
Ответить с цитированием
konstantin.noir

Регистрация: Jan 2008
Сообщений: 24
По умолчанию Math.sin(Math.PI) != 0

Здравствуйте.
Столкнулся с вот таким:
Код:
trace(Math.sin(Math.PI));

//выводит 
//1.2246063538223773e-16
Как бороться с этим?

Старый 09.09.2008, 21:11
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
бороться с чем? с погрешностью? - <<0 или Number.toFixed(). зависит, от того, что нужно в итоге.
__________________
Hell is the possibility of sanity

Старый 09.09.2008, 21:31
konstantin.noir вне форума Посмотреть профиль Отправить личное сообщение для konstantin.noir Найти все сообщения от konstantin.noir
  № 3  
Ответить с цитированием
konstantin.noir

Регистрация: Jan 2008
Сообщений: 24
Мне нужно получить ряд значений, вычисляемых по формуле:
Код:
var __value:Number = Math.sin(Math.PI*(i/k));
где i:uint лежит в диапазоне от 0 до k (k - тоже uint)
Соответственно при значении i = k значение под знаком синуса равно:
Math.PI*(k/k) == Math.PI
Ну а синус от пи всегда был равен 0.
А здесь не так...

Старый 09.09.2008, 21:40
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
а вы себе представляете, сколько знаков после запятой у Math.PI и сколько знаков можно поместить в Number (float / double)?
__________________
Hell is the possibility of sanity

Старый 09.09.2008, 21:43
konstantin.noir вне форума Посмотреть профиль Отправить личное сообщение для konstantin.noir Найти все сообщения от konstantin.noir
  № 5  
Ответить с цитированием
konstantin.noir

Регистрация: Jan 2008
Сообщений: 24
Представлять - не представляю, но
Код:
trace(Math.sin(Math.PI/2));
//выводит
//1
Т.е. как я понял, никак - только проверять равно ли значение по синусом PI?


Последний раз редактировалось konstantin.noir; 09.09.2008 в 21:46.
Старый 09.09.2008, 21:47
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
а как это связано?
В Number в дробную часть нельзя поместить больше 8 разрядов в шестнадцатеричной системе счисления, а пи - иррациональное число, и количество знаков после запятой бесконечно.

для наглядности:
Код:
trace(Math.sin(Math.PI).toFixed(8));


Последний раз редактировалось wvxvw; 09.09.2008 в 21:53.
Старый 09.09.2008, 23:27
konstantin.noir вне форума Посмотреть профиль Отправить личное сообщение для konstantin.noir Найти все сообщения от konstantin.noir
  № 7  
Ответить с цитированием
konstantin.noir

Регистрация: Jan 2008
Сообщений: 24
Спасибо. Просто думается, что такие очевидные вещи, как sin(PI) должны были бы быть реализованы как-то по-лучше.

Старый 09.09.2008, 23:31
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 8  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
"что такое хорошо, а что такое плохо" каждый понимает по-разному ;-)

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:00.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.