A tak z ciekawości to pokaż cały kod. W czym kompilujesz ? Przy okazji użyć syntaxu C++ będzie czytelniej. Kolega Sedr sugeruje, że wprowadzasz dane w nieprawidłowy sposób, to częsty błąd. Czy po wprowadzeniu z kropką zamiast przecinka nadal są jakieś problemy ?
zmieniłem wynik z milisekund na sekundy poprzez elapsedTIme = (millis() - startTime)/1000, jednakże "elapsedTime" nie wyświetla wyniku po przecinku a zaokrągla liczby. Jak sprawić by zmienna elapsedTIme wyświetlała liczby niecałkowite? Wstępna ocena dostępnych informacji Analiza podanych przez użytkownika danych: - Użytkownik zmienił wynik pomiaru...
Witam. Próbuje od jakiegoś czasu pojąć dlaczego dzielenie dwóch liczb zwraca mi zero, jak w kalkulatorze zwraca mi to 0,20~ float test = 2518/12512; sprintf_s(buf, "%f", test); Gdzie wynikiem jest 0.0000 Masz dzielenie stałoprzecinkowe, bo argumenty są całkowite. [syntax=c]float test = 2518.0/12512.0; [/syntax]
(int)/(int) - dzielenie bez przecinka (procesorowy DIV jednostki ALU) (int)/(float) lub (float)/(int) lub (float)/(float) - dzielenie zmiennoprzecinkowe (jednostka FPU) 1 <- liczba typu (int) 1.0 <- liczba typu (float)
super ekstra przybliżenia nie uzyskasz nie mając liczb zmiennoprzecinkowych ale mają DINT (32bity) można zrobić dzielenie pierwsze co to otrzymaną ilość spalonego paliwa zakładając że jest to X litrów mnożysz X przez potęgę 10, potęgę trzeba dobrać tak aby po pomnożeniu nie przekroczyła limitu dla DINT ja zrobiłem np 15x1 000 000 następnie dzielimy...
Tak jak w temacie, mam nadzieję, że coś pomoże. Komunikaty przekopiowane żywcem z forum sklepu PCProjekt. 0. 0x0000 Operacja zakończona pomyślnie. 1. 0x0001 Niewłaściwa funkcja. 2. 0x0002 System nie odnalazł określonego pliku. 3. 0x0003 System nie odnalazł określonej ścieżki. 4. 0x0004 Otwarcie pliku jest niemożliwe. 5. 0x0005 Brak dostępu. 6. 0x0006...
Nie wiem w jakim srodowisku piszesz ale np. w Keilu dla 51 tez taki zapis nie przynioslby skutku, gdyz funkcja sprintf jest typu non-reentrant . Musisz zmienic zapis na: unsigned char Line[17]; float result; result=234.0/212.0 sprintf(Line, "%f", result); LCD_Write(Line); Powinno zadzialac. Pozdrawiam BF
Cena nie zmienia się ponieważ dzielenie wykonujesz na liczbach całkowitych, a zatem i wynik wyrażenia w nawiasie tez jest liczbą całkowitą! Chcąc być poprawny pownieneś mnożyć przez 0.01 albo dzielić przez liczbę zmiennoprzecinkową czyli 100.0 void Towar::potrac_opust (int rabat) { Towar::cena-=cena*(rabat/100...
Najpierw poczytaj co to są liczby stałoprzecinkowe i zmiennoprzecinkowe. Takie dzielenie jak tu zostało zaprezentowane jest na liczbach stałoprzecinkowych. W takim przypadku to ty decydujesz gdzie będzie przecinek i czy w ogóle będzie. Po za tym powtórzę się za kol koodpl : po co takie rzeczy rzeźbić w asm?
tylko w jaki sposób zamierzasz zaimplemetować dzielenie zmiennoprzecinkowe (Nclk>>Nx)? Tu właśnie jest sedno sprawy poruszone. Wie ktoś może jak należy wykonać dzielenie dla dużych liczb?
Witam Poszukuje schematow na bramkach logicznych realizujących dodawanie, odejmowanie, mnożenie, dzielenie na liczbach zmiennoprzecinkowych (format obojętny). Z góry dziekuje.
Brrr, Basic. ;) Przerzuć się na C lub asemblera. Nowe AVRStudio można zintegrować z WinGCC i działa to bez zarzutów. A w C deklarujesz sobie od razu, czy masz zmienną całkowitą (char, int), czy zmiennoprzecinkową (float) i o dziwo artytmetyka zmiennoprzecinkowa nie zajmuje ogromnych ilości flasha. :)
Zmusza. Dzielenie i mnożenie na liczbach zmiennoprzecinkowych nie są tak upierdliwe jak dodawanie i odejmowanie. Ten dodatkowy kilobajt to procedury konwersji, mnożenia i dzielenia na liczbach zmiennoprzecinkowych.
Toshib : Wszystko zależy od typu dzielenia. zmienna "x" jest typu int, a więc całkowitoliczbowa. Tak więc 1/x jest dzieleniem całkowitoliczbowym (dla x=1 równe 1, powyżej równe 0, dla x=-1 równe -1, poniżej równe 0). Zamiana 1 na 1.0 wymusza dzielenie zmiennoprzecinkowe, przez co działanie jest wykonywane poprawnie. ps. Moja zasada dotycząca liczb...
Generalnie jeśli zależy Ci na równomiernym rozkładzie, to oczywiście można to osiągnąć, jednak z wykorzystaniem jednostki zmiennoprzecinkowej, co niestety negatywnie wpłynie na wydajność (sam coś takiego robiłem kiedyś ;) ) Po prostu dzielisz cała długość przez ilość elementów i inkrementujesz liczbę zmiennoprzecinkową wykorzystując do indeksowania...
napisz w języku C funkcję, która dzieli dwie liczby zmiennoprzecinkowe mające długość do tysiąca cyfr w zapisie dziesiętnym Zadanie to przekracza możliwości języka C i zwykłych typów zmiennych, które nie są w stanie pomieścić tak dużych liczb zmiennoprzecinkowych. Aby rozwiązać ten problem, należy skorzystać z bibliotek matematycznych, takich jak GMP...
Proszę bardzo wyjaśnienie poniższych tematów: 1) Jak zamienić liczbe ułamkową na U2 [również daną w postaci zmiennoprzecinkowej] 2) Jak odczytywać liczbe zmiennoprzecinkową? 2) Jak wykonać działanie mnożenia na liczbaczh zmiennoprzecinkowych [z użyciem i bez użycia rozszeżeń] 3) Jak wykonuje się pierwiestkowanie liczb zmiennoprzecinkowych. 4) Jak wykonać...
Ad te sumy, to jeszcze raz zwracam uwagę na pytanie, na ile potrzebujesz dokładności. Jeśli nie jest ona znacząca, to śmiało można posługiwać się zmiennoprzecinkowym (acz znacznie wydłuży się czas sumowania). Jeśli masz prime[x/BITS] >> (PIECES - (x/BITS)) to jest błędne to przesuniecie. Tam musi być reszta z dzielenia, nie dzielenie. Poza tym to przecież...
Zadeklarowałeś int a, b; a wczytujesz do nich wartości zmiennoprzecinkowe. Może warto jednak być mniej upartym i zadeklarować w ten sposób? float a, b; :)
zawsze mozesz scastowac... jak kolega wyzej napisal ktoras ze zmiennych jest calkowita i sta niepoprawne dzielenie...
Czy ktos mi pomoze zdobyć jakieś infornacje związane z prostymi operacjami arytmetycznymi zmiennoprzecinkowymi (dodawanie, odejmowanie, mnozenie?. dzielenie?) na MCS-51. Będe wdzięczny za jakis programik (w asemblerze) na ten temat. Dzięki.
Dziękuję za propozycję. Sam też się znam trochę na optymalizacji i z chęcią się nią bawię. Zresztą o czymś muszę w pracy magisterskiej napisać :D Co do architektury to są faktycznie z nią problemy. Podobnie jak AVR'y ARM'y nie mają wbudowanego dzielenia. Całe niezbędne dzielenie trzeba robić software'owo. Jest to spore utrudnienie i spowolnienie działania....
Cyz koś mogłby wyjaśnić pojęcie liczby zmienniprzecinkowej. Jakie są standardy ? Jak wykonać działania : "+" ; "-" ;"*" ; " / " czyli dodawanie, odejmowanie, mnożenie, dzielenie. Dzielenie nieotwarzające. Pozdrawiam.
No właśnie... Głupie dzielenie czy operacje na liczbach zmiennoprzecinkowych to przecież kolejne funkcje, których adres w kodzie jest zakodowany WPROST... 4\/3!!
Obawiam się, że ATtiny2313 może mieć za mało pamięci do obliczeń na liczbach zmiennoprzecinkowych...
Nie wiem co ten program robi, ale na pewno nie to, co ma w komentarzach. Z definicji liczby zaprzyjaźnione to para liczb - a Twój program sprawdza jedną liczbę? Edit: ok, już widzę jak to ma działać - sprawdzasz czy dana liczba ma liczbę zaprzyjaźnioną. Całe to dzielenie liczb zmiennoprzecinkowych... Nie wystarczy: if (a % b == 0) /* jeśli a...
Np. dać zmienną logiczną warunkującą poprawność wyniku, która będzie ustawiana po drugim odczycie. Dzięki, dodałem tę zmienną. Jakbym mógł to uprościć, bo to jest dzielenie liczb zmiennoprzecinkowych i na pewno długo to CPU oblicza czy nic nie ruszać ? [syntax=c]czas = ( float ) nowy_czas / 1000; // z [ms] na [s] predkosc = ( float ) droga / ( float...
Jednak pomysł pisania "lepszych" wersji funkcji z math.h jest bez sensu - jedyne na czym zaoszczędzi taki "recznie" napisany cosinus to dokładność - znaczną większość kodu takich funkcji i tak stanowią operacje typu mnożenie / dzielenie liczb zmiennoprzecinkowych. Uwierz mi, że jest czasem taka potrzeba (; Zaoszczędziłem dużo cykli, dzięki temu na...
no i cos pokreciłem. Najpierw pomnóż wynik *100, potem dzielenie \10 (koniecznie w tą strone ten ukośnik) a potem normalnie przez /10. Środkowe dzielenie zapewni odciecie wyniku do całkowitej wartości.
A bo bascom to taki kaszaniasty trochę jest jeżeli chodzi o wydajność i dzielenie za pomocą '/' wykonuje jako zmiennoprzecinkowe, czyli obie liczby na zmiennoprzecinkowe zamienia, dzili i wynik zamienia na format docelowej wartośc (i tu chyba jest coś skopane). Natomiast dzielenie za pomocą '\' to dzielenie na liczbach całkowitych, o wiele szybsze.
To jest dość proste do rozwiązania. Załóż, że użyjesz EPROMu. Masz dwie zmienne 4-bitowe, wynik ma składać się z (zapewne) 3 lub 4 znaków. Podłącz do EPROMA: - nogi A0-A1 - wejście do multipleksowania wyświetlacza (do obsługi czterech cyfr) - nogi A2-A5 - wejście argumentu #1 - nogi A6-A9 - wejście argumentu #2 - nogi A10-A11 - wejście typu operacji...
Tablicę masz typu Integer, a dzieląc przez 2 wykonujesz operację zmiennoprzecinkową. Uzyj dzielenia stałoprzecinkowego (div) lub zaokrąglij wynik (Round).
Dim T1 As Single Dim T2 As Single A co to? "Przesunięcia bitowe" na liczbach zmiennoprzecinkowych? Zamień single na int i powinno śmigać. Procedury obliczeńna liczbach zmiennoprzecinkowych pożerają mnóstwo miejsca. Dzielenie liczb całkowitych w bascomie AVR robi się za pomocą \, a nie /, ot taka ciekawostka. Użycie / powoduje wykonanie tego dzielenia...
W moim przypadku (ten EKG), ponieważ ten TMS miał tylko arytmetykę stałoprzecinkową, stosowana była taka arytmetyka mieszana - FFT było liczone stałoprzecinkowo (dokładnie to zaprzecinkowo - liczby traktowane jako (-1, 1)), natomiast w przypadku wystąpienia przepełnienia (tylko podczas dodawania) wywoływana była prosta funkcja dzielącą każdą liczbę...
Chciałem Ci tylko zobrazować jak to zrobic. Nie musisz dzielić a ni mnożyć tych "10do-1". Te 10do-1 to info dla ciebie ile liczba ma miejsc po przecinku. To jest wszystko prosta matematyka, gdzie pewnych rzeczy sie poprostu nie liczy tylko wpisuję jako stałe. Jak chcesz robić wszystkie działania matematyczne na uP to niestety pozostaje tylko C. Funkcja...
Powinieneś dokonać konwersji z liczby zmiennoprzecinkowej do Stringa skoro wykonujesz dzielenie. np. FloatToStr
Użyj języka wysokiego poziomu (C lub Bascom), wtedy nie będziesz miał problemów z arytmetyką zmiennoprzecinkową.
Chyba nie czytałeś ostatnio tego rozdziału z Language Fundamentals. W ten sposób sam sobie robisz kuku... Pomijając to myślę, że jeśli te Twoje zmiennoprzecinkowe masz tylko do dwóch miejsc po przecinku, to dlaczego, po prostu, nie pomnożysz tego x100 a na końcu wyniku nie podzielisz /100? Zapewne wszystko się wykona dużo szybciej niż na tych zmiennoprzecinkowych....
Musisz tylko użyć zmiennych zmiennoprzecinkowych (signle, real, double, extended)
lukaskay - nie piszę w Bascomie więc się nie podejmuję :) Zwróć uwagę, że w proponowanej przeze mnie metodzie pomiaru będziesz musiał wykonać dość niewygodne dzielenie stałoprzecinkowe, albo użyć liczb zmiennoprzecinkowych. Na pewno mniej dokładny sposób pomiaru jest łatwiejszy do obróbki numerycznej. Pozdrawiam, Dr.Vee
Wielkie dzięki za pomoc. Używam zmiennej typu Single ponieważ w dalszej części występuje dzielenie i pojawiają się liczby zmiennoprzecinkowe a z tego co sie orientuje to Word ani Integer takiej możliwości nie mają (chyba, że mają?) :)
Zaoszczędziłem 32bajty. A teksty z lini: 45, 47, 304, 373, 477, 517, 519, 566, 568, 614, 616, 663, 665, 713, 715, 761, 763, 798 dlaczego nie są w Eepromie :)? Możesz wykasować spacje w łańcuchach i zmodyfikować początek Display_msg. Te wszystkie sztuczki pozwolą ci zaoszczędzić parę bajtów , ale największe oszczędności przyniesie ci rezygnacja z liczb...
Mam za mało czasu jeśli chodzi o naukę C. Co do zmiennoprzecinkowych to w pewnych musze ze względu na dzielenie które jest nieuniknione. Chciałem się upewnić czy rozkład zadań jest odpowiedni.
Takie pisanie programu przy pomocy CASE`ów moim zdaniem woła o pomstę do nieba. Program jest napisany niechlujnie i nieczytelnie. Wiem że pewnie Tobie jest to obojętne, ale dzięki temu łatwo zrobić błąd. 1. NIE baw się w takie pokręcone CASE, wystarczy przecież stablicować napisy a potem zrobić wywołanie printf("%s ",tablica case 9: printf("dziewietnascie...
char st1 to nie zadziala. tablice nalezy inicjowac rozmiarem znanym podczas kompilacji. masz wiec dwa wyjscia: 1. albo rozmiar na sztywno 2. albo szybki kurs uzycia funkcji malloc i obslugi dynamicznego przydzialu pamieci (obstawiam, ze jak procek nie ma pozadnej ilosci RAMu, to nawet nie ma co probowac) x = 53.7; <-------------------- tu muszę...
Na wstępie przeczytaj, a choćby przejrzyj dowolną książkę o DSP tego bez liku w sieci. Ad. 2. Liczne zespoloną zapisz w postaci 2 liczb Re i Im, gdyż tak to się robi w DSP. Ilość bitów jest dowolna, zależy tylko od ciebie ale to wiąże się z dokładnością obliczeń. Formaty licz zmiennoprzecinkowych są standaryzowane, jest ich kilka poszukasz znajdziesz...
1. Dzielenie modulo % jest zdefiniowane dla liczb całkowitych, Ty musisz użyć modulo dla zmiennoprzecinkowych (biblioteka math.h). 2. W sumie ręce opadają, jeżeli chcesz poprawnie skompilować to co wkleiłeś.
Błędy były gdzieś w procedurze wyświetlania. Wyrzuciłem ją i tak jak radził BlueDraco wyświetlam przecinek między ostatnimi liczbami. A wartość mnożę i dzielę przez 10.
Jeśli nie potrzebujesz liczb zmiennoprzecinkowych, to pewnie duża dokładność nie jest Ci potrzebna. Więc lepiej zamiast mnożyć przez 1000 i dzielić przez 14, po prostu podziel X przez 71. A funkcje do mnożenia i dzielenia na '51 są w internecie tak powszechne jak spam. Ewentualnie możesz podejrzeć jak to robi kompilator.
No tak... po co się nauczyć lepiej programować, skoro można kupić arma za 3x taką cenę i uwalić go basicem :) Tak się składa, że umiem "dobrze programować" (zapraszam na www.soft4cnc.pl) i dlatego właśnie jestem zachwycony tym Basicem. Bo mimo kolegi sugestii, jakoby język C do programowania mikrokontrolerów różnił się zasadniczo od Basica do tego...
atmega zmiennoprzecinkowy zmiennoprzecinkowy chara bascom zmiennoprzecinkowy
ricoh reset bębna czujnik pralka scania schemat regulacja
Końcowy prąd ładowania akumulatora kwasowo-ołowiowego 12V 45Ah – optymalne wartości Krups ekspres dwa pioruny – błąd grzałki lub zasilania, symbol ⚡⚡, modele EA80/81/82, Intuition