Witam
Czy ktoś wie czemu zmienna single=0,0103 przy wyświetlaniu przyjmuje wartość 0,010299978 ???
Po to stosuje się zmienne zmiennoprzecinkowe żeby mieć dokładność a nie jakieś bzdury.
$regfile = "m8def.dat" ' typ procesora
$crystal = 8000000 ' czestotliwosc kwarcu
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0
Config Lcd = 20 * 4 'typ LCD
Cursor Off 'wyłącza kursor
Cls
Dim P As Single
P = 0.0103
Lcd "P=" ; P
End
Przy okazji czy ktoś przy okazji może mi wyjaśnić jak przykładowo zmienną single=12345,6789 zmienić prosto w zmienną word=12345 ????
Wydaje mi się że obliczenia na zmiennej typu WORD trwają krócej i mniej obciążają procesor niż zmienne single.
Pozdrawiam
XAX
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięZmienne typu SINGLE i WORD
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Re: Zmienne typu SINGLE i WORD
Poczytaj moze troche o sposobie zapisu liczb zmiennoprzecinkowych, takie hasla jak "cecha" i "mantysa", moze to Ci cos rozjasni.Witam
Czy ktoś wie czemu zmienna single=0,0103 przy wyświetlaniu przyjmuje wartość 0,010299978 ???
Po to stosuje się zmienne zmiennoprzecinkowe żeby mieć dokładność a nie jakieś bzdury
Tak na szybko moge powiedziec ze w takim "wyswietleniu wyniku" nie ma nic dziwnego, i wystapi ono niezaleznie od uC, zalezec za to bedzie od uzytego typu zmiennoprzecinkowego, zawsze jednak moga (i beda) pojawiac sie przeklamania, mniejsze lub wieksze.
A probowales poprostu przypisac jedna do drugiej ??Przy okazji czy ktoś przy okazji może mi wyjaśnić jak przykładowo zmienną single=12345,6789 zmienić prosto w zmienną word=12345 ????
Wydaje mi się że obliczenia na zmiennej typu WORD trwają krócej i mniej obciążają procesor niż zmienne single.
Btw. Dobrze Ci sie wydaje... przynajmniej dla wiekszosci uC bedzie to prawda, z prostej przyczyny... brak dedykowanego koprocesora arytmetycznego, ktory zajmowal by sie obliczeniami zmiennoprzecinkowymi.
Witam ponownie.
Dzięki pajaczek za szybką odpowiedz
Tak myślałem że tak jest z tą zmienną single ale wolałem mieć potwierdzenie.
Nie wiem jak to się stało ale kiedyś próbowałem zapisać do zmiennej WORD dane z single i był błąd teraz działa. Musze teraz rozgryźć jak prosto wyświetlić na lcd zmienną WORD (na przykład 12345) w formie zmiennoprzecinkowej (12,345). Program jest już spory i zaraz mi się skończy pamięć w procku.
Dzięki pajaczek za szybką odpowiedz
Tak myślałem że tak jest z tą zmienną single ale wolałem mieć potwierdzenie.
Nie wiem jak to się stało ale kiedyś próbowałem zapisać do zmiennej WORD dane z single i był błąd teraz działa. Musze teraz rozgryźć jak prosto wyświetlić na lcd zmienną WORD (na przykład 12345) w formie zmiennoprzecinkowej (12,345). Program jest już spory i zaraz mi się skończy pamięć w procku.
Wyswietl 12345/1000Musze teraz rozgryźć jak prosto wyświetlić na lcd zmienną WORD (na przykład 12345) w formie zmiennoprzecinkowej (12,345). Program jest już spory i zaraz mi się skończy pamięć w procku.
Wyswietl przecinek
Wyswietl 12345 modulo 1000
albo poprostu zmienna single=12345/1000 i ja wyswietlic
Btw. jak cos nie daje sie przypisac, to mozna sprobowac rzutowania, ale to niech ktos z Bascomowcow sie wypowie, bo sam nie pamietam czy to bylo "bezbolesne".
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 47 gości