Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Почему Math.cos(90 * Math.PI / 180) не дает 0? (http://www.flasher.ru/forum/showthread.php?t=158787)

Bazel 23.06.2011 18:30

Почему Math.cos(90 * Math.PI / 180) не дает 0?
 
вот что выдает
cos90= 6.123031769111886e-17
cos270= -1.836909530733566e-16
cos450= 3.061515884555943e-16
cos630= -4.2861222383783204e-16

код :
Код AS3:

trace ("cos90=",Math.cos(90 * Math.PI/180 ))         ; 
                        trace ("cos270=",Math.cos(270 * Math.PI/180 ))        ;
          trace ("cos450=",Math.cos(450 * Math.PI/180 ))        ;
          trace ("cos630=",Math.cos(630 * Math.PI/180 )) ;
                  trace ("cos0=",Math.cos(0 * Math.PI/180 ))        ;
                        trace ("cos180=",Math.cos(180 * Math.PI/180 ))        ;
          trace ("cos360=",Math.cos(360 * Math.PI/180 ))        ;
          trace ("cos540=",Math.cos(540 * Math.PI/180 )) ;

вопрос : почему не дает 0 и как с этим жить ?

Добавлено через 7 минут
типо это почти 0 означает ?

dimarik 23.06.2011 18:41

Издержки конечной 64-bit разрядности IEEE 754
Такие порядки степени довольно близки к нулю.

GBee 23.06.2011 18:43

Примечание. Результаты применения функций класса Math (acos, asin, atan, atan2, cos, exp, log, pow, sin и sqrt) могут немного различаться в зависимости от алгоритмов, используемых ЦП или операционной системой. Среда выполнения Flash направляет вызов ЦП (или операционной системе, если ЦП не поддерживает вычисления с плавающей запятой) при выполнении расчетов по функциям, входящим в список. Наблюдается незначительный разброс результатов, который зависит от используемого ЦП или операционной системы.

Bazel 23.06.2011 18:58

мм вот оно что , интересно . спасибо

Добавлено через 3 минуты
нубский вопрос : посути ЦП это калькулятор ?

КорДум 23.06.2011 19:07

Цифровой Процессор - да.

Bazel 23.06.2011 19:09

Цитата:

Сообщение от КорДум (Сообщение 1006004)
Цифровой Процессор - да.

а Центральный ?

КорДум 23.06.2011 19:10

Тьфу, центральный.

Bazel 23.06.2011 19:12

ок , спасибо

stasuss 23.06.2011 19:12

я бы не стал заходить так далеко и называть процессор калькулятором.. основа у него все таки алу - арифметико-логическое устройство... да и по скорости и разрядности калькуляторам далеко до процессоров.. а такие результаты при вычислении тригонометрических функций ни на что не влияют. все равно по сути это ноль.

S-ed 24.06.2011 01:43

Тригонометрические функции вычисляются как ряды Тейлора (я ведь не отстал от жизни?). Более быстрый (и иногда даже более точный) способ это таблица поиска. Она содержит значения тригонометрической функции для определенных углов. Например, последовательный многократный вызов реального вычисления синуса, может дать значительную ошибку, если значение в цикле не будет обнулятся.

DJDrugsounD 24.06.2011 09:35

ммм ну тут как не странно всё очевидно, используй числа без 10ых долей тогда у тебя будет и 0 просто он вычисляет до самый мелочей и действительно у него получается 6.123031769111886e-17 ))

Код AS3:

trace ("cos90=",int(Math.cos(90 * Math.PI/180 )));


goodguy 24.06.2011 09:53

Цитата:

используй числа без 10ых долей
При расчете угла в радианах, использование целых чисел недопустимо. Получится полная хрень.

DJDrugsounD 24.06.2011 10:16

Цитата:

Сообщение от goodguy (Сообщение 1006146)
При расчете угла в радианах, использование целых чисел недопустимо. Получится полная хрень.

ну тогда округлять

Код AS3:

trace ("cos90=",Number(Math.cos(90 * Math.PI/180 )).toFixed(2));

но уже идёт погрешность, будет 0.01

так же можно округлить число PI с 3.141592653589793 до 3.14

Код AS3:

trace ("cos90=",Math.cos(90 * Number(Math.PI.toFixed(2))/180));

и уже получится 0.0007963267107332633

goodguy 24.06.2011 12:58

Только смысла в этом нет. Если бы данные выводились на экран, тогда да, а компу по барабану как округлено число


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

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