Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

Функция cos() в Delphi.   Найти похожие ветки 

 
Пит   (2003-06-10 13:16) [0]

Почему стандартная функция Delphi cos() неправильно работает?
Т.е. неправильно считает следующее:
1. cos(270*pi/180) - получается не ноль, а очень маленькое число (порядка -19 степени);
2. cos(90*pi/180) - получается не ноль:
и подобные углы (через 2*pi).
При других значениях угла считает правильно.
Как это можно исправить?
Спасибо.


 
Виктор Щербаков   (2003-06-10 13:17) [1]

Работает правильно.
порядка -19 степени - это уже машинный ноль :)


 
Юрий Зотов   (2003-06-10 13:25) [2]

Ответ на этот и другие подобные вопросы Вы найдете здесь:
http://www.delphikingdom.ru/helloworld/reals.htm


 
HolyGlory   (2003-06-10 13:30) [3]

Используй IsZero (модуль Math).


 
Roma   (2003-06-10 13:30) [4]

> Пит (10.06.03 13:16)

Там косинус считается с помощью разложения в ряд - чистый ноль может получится только при бесконечно большом числе слагаемых... А почему ты решил, что в остальных случаях правильно?... Там тоже наверняка есть отличия в районе 19-го знака после запятой... ;)


Как это можно исправить?

Округлять результат... А вообще сравнение вещественных (иррациональных) чисел правильно делать так: если их разница по модулю меньше определенного "эпсилон" (1E-18, например), тогда считается, что равны...


 
Пит   (2003-06-10 13:56) [5]

Спасибо всем. Проверяю IsZero и все работает правильно.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.031 c
1-84138
DJ Goalkeeper
2003-06-11 11:14
2003.06.26
Прозрачность фона TLabel


14-84597
Vlad Oshin
2003-06-09 09:17
2003.06.26
:) (=============чтоб попасть было легче..:)


1-84096
Raki
2003-06-10 14:40
2003.06.26
Путь к файлу


14-84628
Карлсон
2003-06-09 19:39
2003.06.26
w2k английский.


7-84771
Anonimus
2003-04-17 10:45
2003.06.26
Перезагрузка......





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский