To może ci wcale float nie jest potrzebne, można użyć fixed point? Ew. jak pisałem - rozbij proces konwersji, tak, że najpierw robisz zaokrąglenie, a potem konwersję. Musi być float, wartości muszą być wyświetlane z różną precyzją (poprzednio podałem tylko przykład dla formatu "0.00"). W jaki sposób zrobić zaokrąglenie, powiedzmy to 2-ch miejsc po...
Może rzutowanie wystarczy: [syntax=c]y = (unsigned int)(x + 0.5);[/syntax]
Jeśli wyrzucisz float to musisz zastosować triki z fixed point math. Czyli część całkowitą uzyskujesz dzieląc np. przez 100, a część ułamkową przeprowadzając operację modulo 100. No i nie możesz dać od razu lcd.print, bo najpierw trzeba sformatować to co chcesz wyświetlić, przygotowując łańcuch funkcją sprintf.
Przy zamianie ośmiocyfrowych liczb long do postaci float pojawiają mi się zaokrąglenia na ostatniej pozycji. Czasem o jedną, czasem o kilka jednostek. Na przykład: Zmienna long przed konwersja: 88888889 Zmienna float po konwersji: 88888888.00 Nie dokopałem się do powodów takiego stanu rzeczy. Jakieś pomysły jak z tym walczyć?
a jak byś dodał taką małą funkcje? nie wiem jak to z mikroprocesorami jak to się ma do wydajności zużycia pamięci itd ale na PC działa pięknie, zaokrągla float do 1 miejsca po przecinku z uwzględnieniem 2 miejsca float zkr(float do_zaokraglenia) //3.1415 { float f_tmp; int i_tmp; i_tmp=do_zaokraglenia*100; //314 if( ((i_tmp%100)%10)...
A obliczony wynik jest bliski rozwiązaniu? Może zmiana liczb jest tak niewielka że albo float zaokrągla je, albo nie wyświetlasz określonej ilości cyfr po przecinku.
To wyjaśnia to! Lol, myślałem, że zwariowałem - spojrzałem na kod w zatwierdzeniu 570 i nie mogłem zrozumieć, dlaczego to nie działa. Tak, działa pięknie - tylko jeden mały nit: Wygląda na to, że zaokrągla wartość mired float do liczby całkowitej. Jeśli ustawię zakres jako 153 370,37, nadal pokazuje 2707 jako niską wartość. Nie jest to wielka sprawa...
Muszę napisać program operujący na zmiennych float . Wiem, że na '51 bedzie to działało bardzo powoli, ale wystarcza mi prędkość rzędu max. 20 przeliczeń na sekundę. Potrzebuję wykorzystać funkce zaokrąglające wyniki do liczby całkowitej. Sprawdziłem w helpie i Keil obsługuje funkcje i floor i ceil . Nie wiem jednak jak szybko one się wykonują na '51....
No i działa ok nawet 4 zaokrągla do 4,00 ale jest mały szkopuł jak zrobić aby pobierało mi liczbę z pola edit1 i ją właśnie zaokrąglało zamiast x wstawionego w polu float x = 2.34567 ??
tutaj funkcja do zaokrąglania: float Round (float Value, int precision) { // Sprawdzanie, czy liczba jest ujemna bool Sign; if (Value >= 0) Sign = true; else Sign = false; if (!Sign) Value = -Value; // Zaokrąglanie Value *= pow10 (precision); float x = floor (Value); if (0.5 <= (Value-x))...
Mam pewna liczbe typu float np: 2.3453, 2,311 - jak zaokrąglić prosto i szybko do 2 miejsa po przecinku ? Mam na mysli uzywanie zaokrąglonej liczby w programie jako zmiennej, nie wyswietlanie zaokrąglanie przy wyświetlaniu.
Dlatego Ci napisałem - użyj typu stałoprzecinkowego. Albo sobie zaokrąglaj.
Ostatnio nic z tym nie robiłem, ale jeśli są takie to oznacza że pracuje się na złych typach danych (np. przy rzutowaniu float na short int trzeba zaokrąglać) ewentualnie przekracza się zakres napięcia wyjściowego.
Liczby zmiennoprzecinkowe też są zaokrąglane.
Jeśli chcesz, żeby zaokrąglał zamiast obcinać to do zmiennej float dodawaj 0,5 i następnie rzutuj. REWELACJA, jakie to proste, a nie sposób samemu wymyśleć czasami ... Myślałem o zaokrąglaniu, ale bałem się nawet zapytać :D Dzięki serdeczne - pozdrawiam
Jak chcesz zaokraglac do calkowitych to po co ci floaty, a jak chcesz zaokraglac floaty to np %.2e - dwa znaczace znaki po przecinku. Poszukaj sobie dokumentacji do formatowania printfa.
Na 99% masz zadeklarowane to Combo jako wartości Currency (nawet nie wiem jak to jest w Polskiej wersji :/ "Pieniądze"?!?) co automatycznie zaokrągla do 2 miejsc po przecinku. Zmień format danych na "Float" czy co tam masz "zmiennoprzecinkowego" i będzie OK.
(...) t szerokosc wysokosc temp display.println(temp); display.println(" "); display.drawRect(123,30, 5, 5, WHITE); // to jest od celsjusza znaku display.setCursor(110,25); display.setFont(); display.display(); Blynk.virtualWrite(V2, temp); //sending to Blynk app delay(5000); } Dziękuję za ponowne dostarczenie pełnego kodu. Wydaje się on poprawny i...
Spróbuj tego kodu. Nie zapomnij dodać Math w sekcji Uses. procedure TForm1.Button1Click(Sender: TObject); var S: string; R: real; begin S:='12,73863'; R:=StrToFloat(S); //zamiana stringa na float R:=SimpleRoundTo(R,-2); //zaokrąglanie do dwóch miejsc po przecinku end;
Problem float był wałkowany wielokrotnie na forum. Problem leży w podstawie dwójkowej reprezentacji liczby zmiennoprzecinkowej typu float. Użyj decimal (jeżeli możesz), który ma podstawę dziesiętną lub zaokrąglaj. Kilkanaście sekund szukania w google (przykład akurat w .net, ale dokładnie wyjaśnione): http://gregs-blog.com/2007/12/10/dot-net...
Na początek spróbuj tego: if (ADC != 0) ICR1 = roundf(1000.0 / (float)(ADC)); else ICR1 = 65535; Zaokrągla się na przykład tak jak widać. No i używa się kropki. Niezależnie od środowiska.
ok faktycznie, zapomniałem przepraszam. uC taktowany jest 16MHz, częstotliwość podniesiona do 32 mHz jest to ATxmega8 E5 Bez kasowania flagi przerwania nie wychodzi z niego. Czytałem o tym na jakimś zagranicznym forum, ręczne kasowanie flagi pomaga zmienna adc to float. Wrzuciłem do wyświetlenia samą wartość ADCA.CH0RES wpisując jądo zmiennej typu short...
Za bardzo się wczytałem w komentarze a za mało w oryginalny post... musi odcinać a nie zaokrąglać końcówkę i na początku jeśli wynik jest mniejszy noż 100 000 to musi dodawać zera czyli 6 cyfr Nie ma tam nic o sytuacji kiedy wynik jest dłuższy niż 6 cyfr, jest za to wyraźnie napisane, że ma obcinać ułamek, a nie go zaokrąglać, czyli jak najbardziej...
Czy da się zwiększyć dokładność obliczeń ? T1= 25,5 stC T2 = 24 stC T1-T2 = 1,5 stC a na LCD wyświetla 1stC wyniki zaokrągla do 1st. Bo chyba gdzieś po drodze zamieniłeś 'float' na 'integer'. e marcus
Jak będziesz miał zmienną całkowitą to nie będzie zawierała części ułamkowej po podzieleniu przez 1000, musiałby mieć typ float. Zwykle biblioteki mają obsługę podstawowych typów, np. dla oleda będzie to tekst i liczby całkowite, niekoniecznie float. Jak masz int x=1265 ml to możesz zrobić tak, że zaokrąglasz lub ucinasz do wartości x=x/10=126, zwykłe...
Dzięki za tak ekspresową odpowiedź. Jeszcze takie jedno pytanie: Czy jest taka funkcja, która zaokrągla do 0,01? Nie. A to problem napisać taką? Od razu podpowiem o float raczej zapomnij.
Witam. Chyba problem rozwiązany... Szelus mnie zainspirował tą liczbą zmiennoprzecinkową. Zmieniłem deklarację zmiennej su z int na float i program działa już prawidłowo. Prawdopodobnie jak to zauważył Szelus problem był w zaokrąglaniu liczb. Dziękuję za pomoc.
no i działa mistrzu :) mam to teraz tak: [syntax=php] $xml = simplexml_load_file('C:\serwer\1_Wire_Lo... function GetRoomTemperature($id) { $result = $GLOBALS['xml']->xpath("/DATA/TEMPERA... return $result[0] ; } $temp_01 = round( (float )GetRoomTemperature("4F000005A2B8CF28"), 1); $temp_02 = round(...
Mam taki problem.Chce do jednej zmiennej typu double przypisać dzielenie drugiej zmiennej typu int przez 100.Oto przykładowy kod: int liczba1; float liczba2; liczba2=liczba1/100 I wynik takiego dzielenia jest zaokrąglany do całości,a mi są potrzebne też liczby po przecinku. Jak to rozwiązać?
Potrzebuję wyświetlić po przeliczeniu na wyświetlaczu LCD (klasyczny 20x2) liczbę np. 20 000 000 000 - bez spacji. Chory temat, ale muszę się dostosować do wymagań promotora... Próbowałem sprintf() ale wiadomo co robi z pamięcią procka. Docelowo użyłem dtostrf(), ale dziwnie działa tzn. właściwą wartość 8 002 930 403, pokazuje jako 8 002 930 200. Jakoś...
napisz sobie... coś w stylu: int zaokr(int co, int do_ilu) { return (do_ilu*ceil((float)co/&... } (nie przetestowałem - pisałem z głowy czyli z niczego;))[/code]
Hej. Mam problem. Na początek powiem, że używam FreeRTOS (choć wydaje mi się, że to bez związku). Mam taki kod: [syntax=c]przecinek=(float)licz/100; zmienna=(int)(round(przecinek)); if(zmienna >= 4 ) { fifo[i]=(int)round(przecinek); i+=1; }[/syntax] Działanie: zapisuję do "przecinek" liczbę zmiennoprzecinkową. "zmienna" powstała tylko w celu podejrzenia...
Typ Float ma 23-bitową mantysę - w sensie: 23 bity są przeznaczone na mantysę - być może do tego jest 1 bit, który zawsze jest '1' (liczby, oprócz 0, są normalizowane tak, by najstarszy bit mantysy był '1'); liczba 40000001 potrzebuje 26 bitów, żeby zmieścić i najstarszy, i najmłodszy bit, więc przy konwersji na Float najmłodszy bit jest obcinany (a...
O tym że float może się mylić to znaczy że zaokrągla sobie ułamki i czasem może to być przyczyną błędnego wyniku zdawałem sobie sprawę od dawna, ale mimo że przeczytałem kilka książek o programowaniu to nie przypominam sobie żebym natrafił na wzmiankę że czasem x+1==x, to mnie zaskoczyło. A czymże to innym, jak nie błędem zaokrąglenia? :) FP to tak,...
11.0592 to nie jest liczba całkowita :) int w czasie obliczeń jest zaokrąglany do liczb całkowitych i tu masz odpowiedź :) float Słowa kluczowego oznacza typu prostego, który przechowuje wartości zmiennoprzecinkowych 32-bitowych. int Słowa kluczowego oznacza typem całkowitym [url=http://msdn.microsoft.com/pl-pl/lib... w C# Na przykład...
Naprowadzało, ale tam mój kolega zrobił błąd w kodzie po nie zaprogramował pinów na diody Tam jest 'cała kupa' błędów, albo cały kod jest (o)błędny! Autor był chyba płacony 'akordowo'; od linijki kodu (?!) Czy te diody LED mają pracować jako 'bar-graf' zależny od zmiennej 'średnia' (sredniej wartości analogowej odczytów na pinie2), czy zamiarem jest...
Witam. Zacząłem się uczyć języka C. Mam prosty program do przeliczania temperatur (wiem że można było to zrobić prościej ale lecę z książką i wykonuje ćwiczenia pod każdym rozdziałem). [syntax=c]main(){ int i; printf("%temp celsjusza\t %temp fahr\n\n"); for (i=0; i<100; i=i+5) printf("%d %2.1f\n",i, obliczanie_temp(i)); return 0; } obliczanie_temp(int...
Używałem zamaist funkcji round funkcję floor i tez działa Proszę o wybaczenie, ale to się koledze tylko wydaje, że działa. NIE MOŻNA ZAOKRĄGLAĆ !!! Poza tym, chyba ten kod nie jest do końca poprawny. Wszystko zależy od danych wejściowych, ale jeżeli założymy, że dane są podane w formacie obowiązującym w NMEA, czyli (s)ssmm.mmmm jako liczba zmiennoprzecinkowa....
Akurat nie będzie to miało znaczenia dopóki obie wartości, zadana i mierzona, będą takie same;) Sprawdź sobie algorytm w symulatorze czy w ogóle się sprawdza. Sprawdź czy masz dobre typy zmiennych, uchyb musisz mieć najlepiej float. Jak potem wymnażasz to kiedyś koniec końców musisz zamienić typ na inta, sprawdź czy dobrze zaokrąglasz liczby. Sprawdź...
Wszystkie obliczenia na liczbach całkowitych. Dla zachowania dużej dokładności proponuję obliczenia na uV. No więc 255 odpowiada 5V, czyli 5000000uV. Stała konwertująca odczyt z przetwornika na uV wynosi więc ((5000000 + (255 / 2)) / 255) - dodanie do dzielnej połowy dzielnika załatwia zaokrąglanie do najbliższej liczby całkowitej. Aby dokonać konwersji...
Pomocne było by też ograniczenie/zaokrąglanie wyników do np. 1 miejsca po przecinku - bo dokładność do 6 miejsc po przecinku nie jest taka niezbędna :) https://obrazki.elektroda.pl/7089976900_... Dzięki Mogę bardzo łatwo z poziomu wbudowanego Home Assistant Discovery dopisać wam to: val_tpl {{ float(value)|round(3)...
jak mam podzielić nie używając float?? skoro mam wynik który muszę podzielić na rozdzielczość?? (2^24) zakres napięcia wynosi 0 -2,5V. Pomyśl sobie - masz np rozdzielczość 10-bit czyli 1024 czyli 2,5V / 1024 daje ci 0,002441406V na jeden krok ;) wyobraź sobie ile tracisz na zaokrąglaniu pracując na liczbach typu float. A czym się to będzie różniło...
Tak z itoa też próbowałem, ale itoa działa mi tylko dla typu int, dla typu long int, long long int, też nic nie wyświetla. Wyświetla natomiast dla typu unsigned int, ale zakres jest jak dla zwykłego int. :| Tutaj drugi przykład: [syntax=c]#define F_CPU 1000000l #include <avr/io.h> #include <util/delay.h> #include "HD44780.h" #include <stdio.h>...
Oversampling - ilość próbek jest większa od dzielnika (zwiększa rozdzielczość) Średnia arytmetyczna - dzielnik jest równy ilości próbek. (nie zmienia rozdzielczości) Wszelkie znaki na niebie i ziemi mówią, że "In signal processing, oversampling is the process of sampling a signal with a sampling frequency significantly higher than the Nyquist rate."...
dht.getTemperature() zwraca wartość float - nie wiem, jakiej konkretnie biblioteki używasz do DHT, ale zwykle tak jest. Jeżeli przypiszesz tę wartość do zmiennej int, to jest obcinana część ułamkowa, więc np. 21.99 staje się 21, a 22.01 to będzie już 22. Jeżeli zależy Ci na progach temperatury wyrażonych "po przecinku", to zmienna 'temperatura' musi...
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...
użyłem roundf i teraz zmienna ''i'' jest zaokrąglana. dzięki za to też :-) teraz pytanie, czy tak napisany program To trzeba było się spytać wcześniej :) W zaproponowanym przykładzie najpierw przeliczasz kąt phi z radianów na zakres Dżyszla ) dochodzi do 7% błędu przy phi~pi/2 - przy 3 składnikach błąd nie przekracza 0,5%. Z kolei aproksymacja bez...
Witam! Mam problem z zmuszeniem komponentu DBGrid do dwóch rzeczy, mianowicie: 1. Aby wyświetlał liczby typu float z dokładnością do dwóch miejsc po przecinku. W definicji pola używam typu float, w helpie do InterBase6.0 (tego serwera używam) znalazłem typ: np. NUMERIC(12,2) ale gdy go stosuje otrzymuje komunikat o błędzie dialektu SQL. Do tabeli która...
Sam sung: tak miales racje ale bylem szybszy od ciebie. Tego nie wiesz, wcześniej nie znaczy szybciej :p Rozwiazanie tak samo jak problem jest banalne. float fEy = 34.55; int iValue1 = ( int )fEy; int iValue2 = ( int )ceil( ( fEy - iValue1 ) * 100.0f ); Tyle, że nie jest to rozwiązanie problemu - błędy zaokrąglenia w...
Pisze program do hexapoda i zaciąłem się w jednym irytującym miejscu. Otóż przy obliczaniu kinematyki odwrotnej potrzebna mi jest część kodu która wymnaża liczbę ułamkową powstałą z podzielenia zadanych współrzędnych x/y przez liczbę 256 oraz zaokrągla wynik do liczby całkowitej np w górę. Wynik tego działania potrzebny jest do dalszych obliczeń. Napisałem...
no i ostatni problem. nie wiem dlaczego, ale podaje dobre wartości do tego: dUP=D1-D0 ; dUT=( 29* (T1-T0)/50-((T1-T0)*(T1-T0))/76666)*S/C; P=P0+(100*(dUP+dUT)/S) ; równania, a wynik jest zły. Czy jest to możliwe, że uc nie da rady tego wyliczyć Spokojnie wyliczy. W Twoim wzorze brakuje 29 - powyżej to pogrubiłem. 1. Metoda prosta i zasobożerna - uzyjemy...
Delphi funkcja Zaokr Mam problem z wykorzystaniem funkcji Zaokr przy wyliczaniu zmiennych : i;z Funkcja ma zaokrąglać wyliczenia do 2 miejsc po przecinku na zasadzie (1 do 4) to 0 ; (5 do 9) to 1 W jaki sposób deklarować tę funkcje aby była dostępna do wyliczeń zmiennych : i;z oto kod: unit Unit1; interface uses Windows, Messages, SysUtils, Classes,...
No i po to ten wątek założyłem - żeby się pozbyć tego zakłócenia. Zastanawiam się nad wersją opartą na floatach. Wtedy nadal trzeba by stosować to równanie, a X0 i X1 jakoś zaokrąglać w dół czy w górę? Na pewno odpadnie współczynnik skalujący S, a dX będzie miał wartości np. 57.3261.
USB zasilane jest z power banku, przy korzystaniu z tej skrzynki nie polecam dotykać sie do przewodów przy włączonym PTT. Cały kod programu (jak to bywa, taki mały bałagan - nie planowałem się nikomu chwalić): [syntax=c]#define TWI_FREQ 100000L #include <Wire.h> #include <hd44780.h> // main hd44780 header #include <hd44780ioClass/hd44780_I2Cexp.h>....
https://obrazki.elektroda.pl/3724104100_... Dzisiaj kontynuujemy przygodę z płytką ESP32-2432S028R. W poprzedniej części uruchomiliśmy wyświetlacz oraz ekran dotykowy, więc dzisiaj z tego skorzystamy. Zobaczymy jakie mamy dostępne możliwości i kształty do rysowania a potem rozważymy jakie są sposoby na wydajne rysowanie tak, aby częstotliwość...
Witam czy mógłbym poprosić o pomoc, próbuję stworzyć funkcję arctg dla AVR Atmega16 Czy można prosić jakiś działający prosty i szybki (dla procka) przykład funkcji arctg w C dla AVR. Chce zaimplementować funkcję arctg (Y/X) która miałaby jako argument podawany już wyliczony iloraz dwóch zmiennych w postaci wyniku ze znakiem . Domyślam się, że musiałbym...
Najlepiej zadeklaruj int A; a do wszystkich obliczeń stosuj A/10.0 (najprostszy i najwygodniejszy sposób) Można też zaokrąglić stosując funkcje RoundTo(A,-1) lub ((int)(A*10))/10.0 (poprostu najpierw mnożymy razy 10 później rzutujemy na inta a póżniej dzielimy przez 10 i rzutujemy na float)
Jeżeli sprawdzisz to termometrem "domowym" i okaże się, że jest inna niż podaje "DS" - wyrzuć "domowy" termometr. Do cytowania kodu polecam serwis http://pastebin.com/ Wkleiłem tam Twój kod: http://pastebin.com/sMDZB15p Widzę jeszcze jeden problem z którym będziesz się męczył - drugi czujnik. Będziesz musiał trochę skomplikować program - na początku...
Waga już działa ale wyświetla całe kg. Ponieważ działam na zmiennych typu INT. Chcę zrobić ja tak aby pokazywało do 0.5kg na wyświetlaczu siedmio segmentowym. Ale nie wiem jak z np wagi (dane typu float) 3.44 kg wyodrębnić miejsca po przecinku czyli .44 kg Bo później to już prosto napisze równanie które będzie zaokrąglało do 0.5kg wartość 0.44 kg
Tak, zadziała. log musi mieć float, ale możesz od razu zrobić rzutowanie typów: a=(int)(log10(a)*100); Weź tylko pod uwagę, że takie rzutowanie po prostu obetnie ci część po przecinku, jeśli jesteś zainteresowany zaokrągleniem w górę lub w dół to daj: a=(int)(log10(a)*100+0,5);
https://obrazki.elektroda.pl/4671082400_... Interfejs graficzny Home Assistant opiera się o potężny język szablonów Jinja2. Jinja2 używany jest do przetwarzania danych z czujników, tworzenia warunków w automatyzacjach czy dynamicznego formatowania komunikatów. W celu ułatwienia pracy z Jinja2 Home Assistant oferuje wygodne narzędzie...
https://obrazki.elektroda.pl/8668296200_... Pokażę tu jak połączyć z Home Assistant LCD kalendarz/termometr/higrometr model TH06. Kalendarz ten zbudowany jest w oparciu o moduł WiFi WB3S/BK7231T połączony z dodatkowym mikrokontrolerem, który komunikuje się z modułem WiFi poprzez protokół TuyaMCU. Moduł WiFi jest tu odpowiedzialny za...
No może przesadziłem z tym "zabójstwem" ale ograniczam float'y do niezbędnego minium. Kiedyś musiałem coś takiego wykobinować żeby rodzielić częśc całkowitą i ułamkową (akurat dana z czujnika tensomatrycznego). Kompilator w tym przypadku to Keil ale widzę że GCC też ma te funkcje które tu zostały użyte. Rozdzielana liczba znajduje się w dana.f. union...
bit WpiszLiczbeFloat(unsigned char dx,unsigned char dy,float *ptr,unsigned char typ) {float dana_calkowita;float dana_ulamkowa; union { float f; unsigned long l; }dana; unsigned char znak; //tablica w której będą umieszczone poszczególne cyfry ASCII unsigned char tab[13]={0x30,0x30,0x30,0x3...
Tablicę warto stosować w przypadku gdy sygnał pomiarowy reprezentuje funkcja, która zawiera punkt przegięcia. Dla funkcji wypukłej (wklęsłej) łatwiej będzie zastosować aproksymację wielomianem. Jak znajdę chwilę czasu to policzę to dla Twojego czujnika i podrzucę na forum. Być może uda się to zrobić w ograniczonym przedziale jaki podałeś. http://obrazki.elektroda.pl/4094572000_1...
Myślałem o zwykłej konwersji (typu IntToStr itd), ale wydawało mi się, że w BCB powinna byc jakaś "gotowa" funkcja do tego typu działań. O rzutowaniu równiez myślałem. Sprawdzę jeszcze Round(f), floor(f), ceil(f). Dzięki za odpowiedź. Tak, floor i ceil mnie zadowalaja.
o ile dobrze pamietam to dolaczasz plik iomanip.h, i piszesz np cout << setprecision (3) << zmienna;
Sam MLX90615 ma dokładność pomiaru nie większą niż 0.5 °C. Termometr lekarski zwykle mają dokładność 0.1 °C lub lepszą. Poza tym użyta biblioteka MLX90615 wprowadza dodatkowo "szkolne" błędy przy zaokrągleniach na typie float przy obliczaniu temperatury, co tylko pogarsza sprawę dokładności odczytu.
Mnożąc zmienną typu WORD przez stałą CONST wychodzi niedokładny wynik. Np: WORD = 200 x CONST = 0.0025 = SINGLE = 0.499999933. Dokładność obliczeń zmiennoprzecinkowych jest kwestią długości (i formy) reprezentacji liczb zmiennoprzecinkowych. Z oczywistych względów w ośmiobitowych procesorach z małą pamięcią reprezentacja FP nie może być zbyt długa...
Fajny podprogram, myślę, że warto takie rzeczy czasem przypominać, gdy wszyscy widzą tylko ARM, floaty, itd. Dobrze wykorzystuje możliwości procesora w celu skrócenia kodu. Niestety jest kilka niedoróbek. 1. Dziwne (niestandardowe) zaokrąglanie wyniku. Tzn. wartość poprawna dla kwadratów, dla pozostałych - zaokrąglenie w górę. 2. Powoduje to błędny...
tutaj [syntax=arduino]float temperature = static_cast<float>(static_cast<... * 10.)) / 10.;[/syntax] masz odczyt temperatury od razu zaokrąglonej do jednego miejsca po przecinku do zmiennej temperature. Presentation wykonuje się raz na początku, potem...
W tym algorytmie nie można liczyć "kroku" raz na początku ponieważ błędy ewentualnych zaokrągleń się skumulują. Trzeba w każdym "kroku" wyznaczać najlepsze przybliżenie. Dlatego proponowałem operacje na ułamkach. [syntax=c] float krokX = x.x; float pozycjaX = 1.0; int32_t X; X = pozycjaX; pozycjaX += ktokX; [/syntax]
do zaokrąglenia użyłem FloatToStrF(new_sens,ffFixed,4,2); a to już gotowy programik, taki pomocny dla graczy :)
Przesiadłem się z MIDP-1.0 na MIDP-2.0 który posiada więcej metod odnośnie klasy Math. Fakt faktem aplikacje będą potrzebowały fona z obsługą MIDP-2.0, ale już teraz coraz więcej ich jest :) A poza tym można to zrobić tak : float i_BL = (new Float( (txtBL.getString()).trim... ).floatValue(); float i_P...
Rozwiązałem to tak tylko problem jest z groszami bo czasami zdarza się że jak wpisze na przykład 0.45 to program zaokrągla tą liczbę i wstawia 0.449999 i w rezultacie po odrzuceniu części tysiącznych liczby otrzymuję 0.44 zamiast 0.45 #include <stdio.h> #include <conio.h> void setki(int x) { switch(x) { case 1:...
(unsigned int)(((float)stala)*0.58 ) ; powinno wystarczyć (unsigned int)( (float)stala * 0.58 ) '(float)stala': deklarujesz, że Twoja 'stala' jest zmiennoprzecinkowa mówisz w ten sposób kompilatorowi aby potraktował wyrażenie '(float)stala * 0.58' jako mnożenie dwóch liczb zmiennoprzecinkowych. Dzięki temu, wynik tego mnożenia również jest zmiennoprzecinkowy....
Jak zwał tak zwał....w zasadzie na upartego można by biedronkę wmieszać w budowę rakiety ;) Nie chcę używać printf. Chciałbym tylko aby liczba została zaokrąglona do drugiego miejsca po przecinku w miejscu w którym uznam za właściwy. Czy jest na to jakiś sposób?
Nie wiem czy znajdziesz jakąś biblioteke która wyeksportuje Ci wykres do bitmapy wiec lepiej zainteresuj sie chociażby OpenGL-em. A co do liczby to najprościej byłoby ją chyba zaokrąglić. pozdrawiam
Pierwsza uwaga - jak widzę prowadzisz obliczenia na liczbach podwójnej precyzji - AVR-libc nie wspiera takich obliczeń, dostępny jest jedynie typ float. double jest równy float i nie zwiększa precyzji obliczeń. Więc pierwszy błąd wynika z zaokrąglenia liczby do około 7-8 cyfr znaczących. A dalej to proponuję odpalić ten kod w symulatorze i porównać...
Można też kombinować inaczej. Tzn zapisać sobie osobno część całkowitą i osobno to, co mamy po przecinku. Ja czasem zamiast używać liczb rzeczywistych - po prostu używam wartości pomnożonych przez 100 trzymanych w zwykłym uint32_t (zaokrąglenie do 2 miejsc po przecinku). Czyli wyświetlając przesuwam sobie po prostu przecinek w lewo o 2 pozycje. Prosto,...
ADC dobrze było by zrzutować na floata. A później zaokrąglić wynik. OCR1A=roundf(14745000/(512*(... + 0.9814))); Bezsens takich obliczeń pomijam, bo w celu zabawy czy nauki nie są jeszcze tragedią.
tylko zmienne całkowite fajnie się formatuje na wyświetlaczu rzucając je do tablicy. Co jest absolutnie błędne i niczym popartre stwierdzenie!!! Niżej załączony przykładowy kode testowy powinien rozwiać tą niepoprawną wątpliwość. W tym teście wprowadziłem symulację incrementowania zmiennej typu 'float', celowo w formacie 3-ch miejsc po przecinku aby...
Jak sama nazwa wskazuje CurrToStrF służy dla typu Currency nie dla float. Użycie CurrToStrF spowoduje domyślną konwersje na Currency czyli zaokrąglenie do 4-ch znaków po przecinku po czym, ponowna konwersja do double aby to sformatować i wywołać FormatFloat . Dla wyświetlenia typu float lub double właśnie polecam: [syntax=c]Edit1->Text = FormatFloat("#0.00",x);[/syntax]...
https://obrazki.elektroda.pl/3743484600_... Witajcie moi drodzy Przedstawię tutaj mojego shielda (nakładkę) na Arduino UNO opartego o układ ENC424j600. Shield ten pozwala podłączyć Arduino do internetu bez żadnego lutowania, a nawet bez użycia kabelków i płytek stykowych. W temacie dam jedenaście pełnych przykładów jego użycia z moimi...
Gdy wartość wynosi przykładowo od 2,1 do 2,3 wyświetli odpowiednio od 2,0 do 2,2. Powyżej 2,4 będzie już prawidłowo. Oczywiście jest tak z każdą liczbą czyli przy 3,1; 4,1 itd. będzie to samo. Wynika to z faktu, że operacja int(x) zaokrąglą zmienną float x zawsze w dół. Musisz "pokombinować" jak to zrobić z funkcją [url=http://www.cplusplus.com/reference/...
Tak? To w takim razie gdzie suma? Proponuję całe zaganienie rozbić sobie na bardzej drobiazgowe problemy i wynik każdego zapamiętywać do zmiennej, np: int silnie_j_minus_2=silnia(j-2); //zdefiniuj funkcję! float zaokrąglenie=Math.floor(silnie_j_min... float pod_suma=silnie_j_minus_2-j*zaokraglenie... następnie określ samą pętlę dla...
unsigned long r = sqrt(p); Objaśnij może jak ma działać ten Twój algorytm. Na pierwszy rzut oka -> sqrt() zwraca Ci wartość zmiennoprzecinkową (float/double), a Ty przypisujesz to do typu całkowitego (long), więc możesz mieć błąd, chyba że to zaokrąglenie algorytm zakłada?
U zarania DSP np. TI produkował procesory fixed-point i nikt nie wydziwiał bo nie miał alternatywy i urządzenia działały na nich, śmiem twierdzić lepiej a userzy nie byli beta-testerami. Dopiero później zrobiło się wielkie państwo :) "Bez float nie mogie i już, co mi zrobicie?". No i nastał czas float-ów a potem już zupełne bezeceństwo, double się zachciało....
Nazwa zmiennej 'c' jest do uzgodnienia i nie ma większego wpływu na przebieg programu. Mnożę przez -1 tylko wartości dotyczące punktów w pionie. w moim przypadku gdy wpiszesz g.drawLine(0,0,3,3); będzie to linia o początku w punkcie (0,0) i końcu (3,3) ale linia będzie pod osią x. (0,0,3,-3) linia będzie nad osią x. co do skali to będę musiał użyć np....
perlon: stosowałem float albo double Dodano po 2 Już mam, chodziło mi o: #include <iostream> using namespace std; int main() { double adch, vin; int cyfra_int, dd, jj; for (adch=1;adch<=255;++adch) { vin=adch*5/255; //cout <<"Vin Float "<<vin<<endl; vin=vin*10; cyfra_int = (int)(vin);...
Wykorzystując posiadany kod emulatorów DSM-51 oraz CA80 postanowiłem napisać na własne potrzeby eksperymentalny interpreter 8051 i Z80 w jednym. Interpreter jest uproszczony, nie ma kontroli cykli zegarowych, a w przypadku 8051 nie ma emulacji układów licznikowych, transmisji szeregowej itp. Z grubsza ma działać tak, że piszę pewien program w C, kompiluję...
Rozumiem, że liczyłeś już coś na fp16? Ogólnie spoko feature, ale ilość dodatkowych operacji w rzeczywistych obliczeniach ogranicza zastosowanie triku z 16b. zmiennoprzecinkowym przetwarzaniem (niska rozdzielczość danych). Dodatkowo większość zastosowań z którymi się spotkałem promowała 32b., również sposób organizacji dostępu do pamięci (GTX780). W...
Napisałem poniższą funkcję do konwersji liczby typu float na stringa, który go reprezentuje. W symulatorze AVR Studio sprawdziłem czas takiej konwersji przy zegarze 16MHz i wyniósł on ok 500µs. Czy ma ktoś pomysł jak bardziej zoptymalizować tą funkcję? Inna sprawa to optymalizacja wykorzystywanej pamięci, bo w tej chwili wykorzystuje jeśli poprawnie...
Mam pytanie: jak obliczyć wartość napięcia skutecznego napięcia sinusoidalnego? Podaje sobie napięcie o amplitudzie 1V (+offset 1V) na kanał przetwornika ADC. I tu się pojawia problem. Jak powinienem napisać program, aby zbierać te próbki do jakiegoś bufora (rozumiem, że może być tablica float)? I dalej: jak policzyć tą wartość skuteczną? Wiem, że...
Hmm, spójrz jeszcze raz na kod kolegi robert-gd, a potem na ten swój - nieźle pokręcony. Jak myślisz, który jest bardziej uniwersalny? Nie wiem po co chcesz korzystać z daty juliańskiej? Tak jak kolega robert pokazał, należy dowolną datę przeliczyć na jednostki które cie interesują, np. sekundy, następnie przeprowadzić zwykłe odejmowanie i ponowne przeliczanie...
Witam mam mały program z programikiem. Muszę zaokrąglić liczbę E o 'n' miejsc po przecinku. Program ma mniej więcej wyglądać tak: Wpisz liczbe n 3 e = 2 e = 2.5 e = 2.666666666666666519 A oto liczba e z biblioteki math e = 2.718281828459045091 Mi wychodzi coś takiego: podaj liczbe n: 3 2 2.0 2.00 Wartosc liczby 'e' wynosi:2.71828183 Aby kontynuować,...
Mam następujący problem: próba przybliżenia przy pomocy funkcji floor kończy się fiaskiem jeżeli próbuje przy jej pomocy zaokrąglić jakąkolwiek zmienną. Już wyjaśniam na przykładzie: Jeżeli w podanym niżej kodzie przy funkcji floor wpisać w nawias jakąkolwiek wartość niecałkowitą (np. 22.4864564), to kompilator skompiluje i wszystko zadziała, tzn. zmiennej...
Ok, pomogło. Wielkie dzieki. Dodano po 3 Dodano po 0 [syntax=c]float czas_symulacji=20.000000; while(1){ printf("Czas: %f\n",czas_symulacji); // printf("WJAZD: i=%d\n",i); int n=1; for (i=k-1;i>=0;i--) if (p[i].Przyjazd == czas_symulacji) printf("%d. %d %s %s %f %d \n",n++, p[i].ID, p[i].Pociag, p[i].Typ, p[i].Przyjazd, p[i].Peron); czas_symulacji+=0.1;...
Witam, trochę przegrzebałem fora dyskusyjne wczoraj i dziś w szukaniu wersji non-float i znalazłem to. // na początku kodu #define THERM_DECIMAL_STEPS_12BIT 625 //.0625 uint8_t temperature[2]; int8_t digit; uint16_t decimal; char buffer[14]; digit=Temperature.LSB>>4; digit|=(Temperature.MSB&0x7)... decimal=Temperature.LSB&0xf;...
Witam jakiś czas temu kupiłem na Allegro wyświetlacz VFD od kasy fiskalnej model Fujitsu VF60. Postanowiłem zrobić na nim termometr jednopunktowy z czujnikiem DS18B20, po rozkręceniu wyświetlacza okazało się że jest to wyświetlacz z interfejsem UART i pojawił się problem. W sieci jest sporo projektów termometrów ale wszystkie opierają się na tradycyjnym...
funkcja zaokrąglać zaokrąglać bascom zaokrąglać liczba
wymiana parownik renault nierówny praca gaźnik kosiarka brother drukarki zmiana języka
napęd bramy dwuskrzydłowej odkurzacz bosch
Żyrandol 3-ramienny – świeci cały czas, nie działa wyłącznik, podłączenie fazy, diagnostyka Hako V490 – ile oleju do silnika? Pojemność, typ, wymiana, Lombardini LDW 602