ATNEL tech-forum https://forum.atnel.pl/ |
|
Funkcja modulo dla float https://forum.atnel.pl/topic21115.html |
Strona 1 z 1 |
Autor: | Jarosław J [ 10 sie 2018, o 18:13 ] |
Tytuł: | Funkcja modulo dla float |
Hej ! Znów wracam z prośbą. Przerobiłem pewną funkcję z Pascala. Tam utworzono funkcję o nazwie modd która zwracać ma jak to autor opisał w komentarzu -"wartosc dzielenia liczb rzeczywistych" Przerobiłem tę funkcję a następnie się jej przyjrzałem - wygląda ona tak: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. w oryginale język pascal Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Jednak z tego co widzę funkcja w tej postaci jest funkcją "modulo" - zwracającą resztę z dzielenia Funkcja w mojej ocenie w postaci jak ją przerobiłem powinna działać dobrze, więc przystąpiłem do kolejnych działań przy jej pomocy. Okazało się jednak, że wynik różni się od tego co powinienem otrzymać. Stwierdziłem to na podstawie współczynników jakie miałem wyłonione w tym samym programie w Excelu. Tam formuła z tą funkcją wyglądała tak: =MOD((6,2400408+628,3019501*F5);6,28318530718) W Pascalu wygląda tak: G:=modd((6.2400408+628.3019501*Cent),6.28318530718); więc w C powinna wyglądać tak: G = modd((6.2400408+628.3019501*Cent),6.28318530718); W taki sposób właśnie ją wywołuję. Zmienna Cent w tym wypadku wynosi 0.176057495 Włąściwym wynikiem działania funkcji ( podejrzanym w Excellu ) powinna być liczba 3,759972625 mnie w programie po wyświetleniu na lcd wychodzi 0.32767 Podam jeszcze w jaki sposób ja wyświetlam na LCD - Jako że to jest zmienna typu double - rzutuję ją do INT wysw = (int) (G*10000); Nie wiem gdzie się mylę. Gdyby ktoś bardziej doświadczony zechciał spojrzeć na te działania a także sposób wyświetlania. Błąd podejrzewam już wszędzie. ------------------------ [ Dodano po: 56 minutach ] Pomogła zmiana zapisu działania w funkcji mod w ten sposób: Modd = x - y*(int)(x/y); ale za nic nie wiem dla czego poprzednia wersja nie działała! |
Autor: | maki26 [ 10 sie 2018, o 20:51 ] |
Tytuł: | Re: Funkcja modulo dla float |
Tylko zgaduje, ale moze ramu braklo na stosie jak obrabiales double. Rzutowanie d inta moze pomoglo Wysłane z mojego GT-I9505 przy użyciu Tapatalka |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |