Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Math.sin(Math.PI) != 0 (http://www.flasher.ru/forum/showthread.php?t=115766)

konstantin.noir 09.09.2008 20:54

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

trace(Math.sin(Math.PI));

//выводит
//1.2246063538223773e-16

Как бороться с этим?

wvxvw 09.09.2008 21:11

бороться с чем? с погрешностью? - <<0 или Number.toFixed(). зависит, от того, что нужно в итоге.

konstantin.noir 09.09.2008 21:31

Мне нужно получить ряд значений, вычисляемых по формуле:
Код:

var __value:Number = Math.sin(Math.PI*(i/k));
где i:uint лежит в диапазоне от 0 до k (k - тоже uint)
Соответственно при значении i = k значение под знаком синуса равно:
Math.PI*(k/k) == Math.PI
Ну а синус от пи всегда был равен 0.
А здесь не так...

wvxvw 09.09.2008 21:40

а вы себе представляете, сколько знаков после запятой у Math.PI и сколько знаков можно поместить в Number (float / double)?

konstantin.noir 09.09.2008 21:43

Представлять - не представляю, но
Код:

trace(Math.sin(Math.PI/2));
//выводит
//1

Т.е. как я понял, никак - только проверять равно ли значение по синусом PI?

wvxvw 09.09.2008 21:47

а как это связано?
В Number в дробную часть нельзя поместить больше 8 разрядов в шестнадцатеричной системе счисления, а пи - иррациональное число, и количество знаков после запятой бесконечно.

для наглядности:
Код:

trace(Math.sin(Math.PI).toFixed(8));

konstantin.noir 09.09.2008 23:27

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

CrazyFlasher 09.09.2008 23:31

"что такое хорошо, а что такое плохо" каждый понимает по-разному ;-)


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

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