[C++] Radiany na stopnie, minuty i sekundy


(Lol600000065) #1

Czesc,

Chcialbym się zapytać czy dobrze robię zamianę wielkosci kąta w radianach na stopnie, minuty i sekundy:

#include

([alex]) #2

include

stopnie = 180 * radians / M_PI;


(Lol600000065) #3

Aha, zapomniałem dodać, że stopnie, minuty i sekundy potrzebuję własnie w int, stąd to rzutowanie jakby coś.

Czyli niedokładności wyrzucane przez program wynikają tylko z winy mojej za krótkiej liczby pi ?


([alex]) #4

jak chcesz mieć w minutach i sekundach to:

int stopnie=180*60*60*radians/M_PI+0.5;

int sekundy=stopnie%60; stopnie/=60;

int minuty=stopnie%60; stopnie/=60;

(Lol600000065) #5

dzięki, a dlaczego ostatnia instrukcja

stopnie/=60; [/code]

jest konieczna ?


([alex]) #6

tak, bo masz te stopnie pomnożone dodatkowo na 60*60 więc koniecznie jest dwa razy podzielić przez 60.


(Lol600000065) #7

Czy wobec tego tutaj jest błąd:

http://www.unitconversion.org/angle/rad ... rsion.html

Przy 67 radianach, ta strona daje mi 230329 a program 49...

Kod programu:

#include

([alex]) #8

Po pierwsze 67 radian to jakieś 20 obrotów.

weź sensowne dane np: pi/2 = 90 stopni

1.5707963

program daje 90'00'00

a strona daje:

5399.999907886

z tym że napisano tam że podaje w minutach:

90*60=5400

Podsumowując strona oblicza poprawnie lecz z niską dokładnością.