ethanak Lipiec 19, 2019 Udostępnij Lipiec 19, 2019 @szczawiosław pozwolę sobie na ten temat mieć inne zdanie 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
szczawiosław Lipiec 19, 2019 Autor tematu Udostępnij Lipiec 19, 2019 (edytowany) @ethanak spoko, ale jak mógł byś to rozwinąć? Edytowano Lipiec 19, 2019 przez szczawiosław Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Lipiec 19, 2019 Udostępnij Lipiec 19, 2019 Rozwinę. Porównaj round(x) *10 i round(x*10). Co będziesz miał np. przy x=3.14? Cytuj Link do komentarza Share on other sites More sharing options...
szczawiosław Lipiec 19, 2019 Autor tematu Udostępnij Lipiec 19, 2019 (edytowany) Chcę uzyskać liczbę z dokładnością do jednego miejsca po przecinku. Jeżeli zrobię round(SetTemp - AverageTemp) to uzyskam liczbę całkowitą, dlatego jest round((SetTemp - AverageTemp)*10). Jeżeli zrobił bym round(SetTemp - AverageTemp * 10) to uzyskła bym inny wynik, a bez sensu jest zapisywać SetTemp - AverageTemp do kolejnej zmiennej jeżeli wykorzystuje ją tylko w tym miejscu. Dzięki temu zaokrąglam liczbę nie np. 3,14, a 31,4. Po zaokrągleniu otrzymuje odpowiednio 3 oraz 31. Jeżeli teraz podzielę drugą liczbę przez 10 uzyskam liczbę 3,1 czyli zaokrąglenie do jednego miejsca po przecinku tak jak tego potrzebuję. Jedyny zbędny nawias to ten na przed round i przed ;. Edytowano Lipiec 19, 2019 przez szczawiosław Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
ethanak Lipiec 19, 2019 Udostępnij Lipiec 19, 2019 (edytowany) No to spróbuj. Jeśli z round(3.14) * 10 wyjdzie Ci 31 to będziesz mógł się ze mnie śmiać na wszystkich forach, a ja wlazę pod stół i będę szczekać. Edytowano Lipiec 19, 2019 przez ethanak Cytuj Link do komentarza Share on other sites More sharing options...
szczawiosław Lipiec 19, 2019 Autor tematu Udostępnij Lipiec 19, 2019 (edytowany) Jest różnica w wyniku dla round((X - Y) * 10), round(X - Y * 10)? Przyjmijmy X = 5, Y = 3,14. Edytowano Lipiec 19, 2019 przez szczawiosław Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Lipiec 19, 2019 Udostępnij Lipiec 19, 2019 (edytowany) owszem, ale nie o to chodzi. spójrz na te nawiasy. Jest różnica między round((x-y)*10) a (round (x-y)*10). Edytowano Lipiec 19, 2019 przez ethanak Cytuj Link do komentarza Share on other sites More sharing options...
szczawiosław Lipiec 19, 2019 Autor tematu Udostępnij Lipiec 19, 2019 9 minut temu, szczawiosław napisał: Jedyny zbędny nawias to ten na przed round i przed ;. Dobra, nie zrozumieliśmy się. Nawiasy zostały po jakiejś funkcji i zapomniałem usunąć, a napisałeś tak że zrozumiałem że te środkowe są zbędne w których znajduje się odejmowanie. Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Lipiec 19, 2019 Udostępnij Lipiec 19, 2019 To popraw i pokaż. Na pocieszenie - @Belferek zrobił ten sam błąd. 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
szczawiosław Lipiec 20, 2019 Autor tematu Udostępnij Lipiec 20, 2019 @ethanak specjalnie tobie: DiffTemp = round((SetTemp - AverageTemp)*10)/10; Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Lipiec 20, 2019 Udostępnij Lipiec 20, 2019 21 godzin temu, ethanak napisał: Na pocieszenie - @Belferek zrobił ten sam błąd Ja tam swojego błędu w żadnym miejscu nie widzę - zapytałem, a szczawiosław odpowiedział i tyle. Pozdrawiam, Cytuj Link do komentarza Share on other sites More sharing options...
szczawiosław Lipiec 26, 2019 Autor tematu Udostępnij Lipiec 26, 2019 Znalazłem jeszcze błąd w swoim kodzie. Funkcji abs() automatycznie zmienia float na int. Chciałem mieć amplitudę 1°C, a przez to miałem 2°C. na szczęście jest funkcja fabs() 🙂 Więc obeszło się bez większych kombinacji. Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Lipiec 26, 2019 Udostępnij Lipiec 26, 2019 W kwestii formalnej: funkcja abs nic nie zmienia, po prostu jej argument jest typu int i kompilator generuje kod zmiany typu (rzutowania) przed przekazaniem wartości do funkcji. Niby mała różnica... ale jednak. 2 Cytuj Link do komentarza Share on other sites More sharing options...
szczawiosław Lipiec 26, 2019 Autor tematu Udostępnij Lipiec 26, 2019 (edytowany) Głupi błąd którego wcześniej nie zauważyłem. No i regulacja PWM jest teraz płynniejsza. Edytowano Lipiec 26, 2019 przez szczawiosław Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Lipiec 26, 2019 Udostępnij Lipiec 26, 2019 Dość powszechny i nie ma się czego wstydzić. Kiedyś w Fortranie miałem funkcję abs i iabs (jak się pewnie domyślasz działały dokładnie odwrotnie)... Czasem lepiej korzystać z makra. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!