Skocz do zawartości

Pomocna odpowiedź

(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 przez szczawiosław
(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 przez ethanak
(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 przez ethanak
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.

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.

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.

  • Lubię! 2

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.

 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...