zrób sobie unie: union dane { float f; unsigned int i; }; Zakładając, że float i uint mają ten sam rozmiar (sprawdź to) wpisując do float'a liczbe jaką chcesz, dostaniesz jej odwzorowanie bitowe w uint'cie. A dalej już jak wyżej.
Jest to domyślna "rozdzielczość" dla funkcji Serial.print(). Jeżeli chcesz więcej liczb po przecinku, to należy podać ile ich ma być np.[syntax=c] Serial.println(times, 6);[/syntax][url=https://www.arduino.cc/...
Ja mam identycznie i jest OK. Mam jeszcze jedno pytanie: czy masz włączoną optymalizację kodu w GCC?
Oj tam! Jeśli chce na float, to niech robi. Ja nie neguję. :) Dałem sobie chwilkę i przejrzałem Twój kod. Nic dziwnego, że masz kaszanę, skoro używasz do wyświetlenia tekstu z RAM procedury czytającej teksty z Flash. :) W procedurze LCD_WRITE_TXT zmień linię[syntax=c]mark = pgm_read_byte(&text[turn++]);[/synta... = text[turn++];[/syntax]...
char is 8 bits, int is 16 bits, long is 32 bits, long long is 64bits, float and double are 32 bits(this is the only supported floating point format),pointers are 16 bits (function pointers are word addresses, to allow addressing up to 128K program memory space).There is a -mint8 option(see Options for the C compiler avr-gcc)...
1.1 - 1.0 = 0.10000000000000009, czyli wynik odejmowania nie jest dokładnie równy 0.1. Przy porównywaniu liczb typu float czy double trzeba dopuścić jakiś margines błędu. [syntax=php]EPSILON = 0.0001 if (abs($x - $y - $z) < EPSILON) ...[/syntax] Zob.też "Comparing floats" w https://www.php.net/manual/en/language.t... i ew. https://pl.wikipedia.org/wiki/IEEE_754
zamień: [syntax=c]w = x.numerator/x.denominator;[/syntax] na: [syntax=c]w = (float)x.numerator/x.denominator;[/synta... i najlepiej float na double
Uwierz mi, że wszystko działa jak trzeba, tylko trzeba mieć świadomość różnic między float a double... Np. jak wezmę Twój przykład i zmienie double na float: volatile float f = 123.5434; Niby OK, ale... 123.5434 jest... liczbą typu double, więc faktycznie masz konwersje (ze względu na volatile). Jak dasz 123.5434 f (albo zrzutujesz na float), to już...
Niestety o ile dobrze kojaże, w C mamy do dyspozycji tylko dwa typy zmiennych dla liczb zmiennoprzecinkowych - wspomniany float oraz double (8 bajtów, 15 miejsc po przecinku), w razie w long double, ale to nie to czego szukasz. Tak więc prostszego od float typu nie znajdziesz. Natomiast istnieje kilka innych rozwiązań dla liczb zmiennoprzecinkowych,...
[syntax=cpp]liczba = (ulamek/1000) + calkowita;[/syntax] ulamek/1000 - wynik będzie w int, a następnie będzie rzutowany na float, czyli stracisz część ułamkową. Wystarczy rzutować jedną z liczb na float, lub po prostu zapisać 1000 w postaci 1000F (F bo float). Jeśli wynik byłby double to wystarczyłoby 1000.0.
1. do [u]int{8,16,32}_t są specjalne znaki formatujące dla printf() - jak poszukasz to znajdziesz. 2. Do konwertowania liczb całkowitych na string prościej użyć innych funkcji, które tyle nie zajmują (itoa() itp.) Do float i double też są takie funkcje. 3. Kompilator nie czepia się, że chce inny typ zmiennej, tylko że funkcja zignoruje dodatkowe specyfikatory...
Masz źle napisanego SQL. Insert into tabela.. Zauważ, że puszczasz zapytanie do bazy. Całe zapytanie jest stringiem, więc nie ma problemu żeby zainsertować do bazy coś, co było w we właściwości Text. Nie trzeba tego w żaden sposób konwertować. Co najwyżej musisz pamiętać o tym, że w liczbach zmiennoprzecinkowych w zapytaniu mają być kropki, a nie przecinki....
Twój kod działa poprawnie dla odpowiednio małych liczb. jak skompilujesz i uruchomisz: [syntax=cpp]#include <limits> #include <iostream> int main(){ int minimalnyInt = std::numeric_limits<int>::min(); int maksymalnyInt = std::numeric_limits<int>::max(); float minimalnyFloat = std::numeric_limits<float>::min(); float maksymalnyFloat...
No to w sumie temat jest prosty. Poprzednio zrozumiałem że tę funkcję chcesz ładować z zewnątrz w trakcie pracy procesora (np. z PC albo innego układu podłaczonego jakimś interfejsem komunikacyjnym) robisz sobie wskaznik na funkcję. Jak chcesz zmienic co jest wołane zmieniasz po prostu ten wskaźnik: [syntax=c]float Oblicz(float v1,float v2){ return...
Po pierwsze to powinieneś solidnie komentować takie funkcje. Opisz sobie dokładnie które zmienne powinny mieć jakie jednostki. Gdybyś to zrobił to byś zobaczył że do zmiennej która trzyma wartość w stopniach przypisujesz radiany. Dalej - zastąp RAD2ST makrem DEG2RAD(x). Będzie czytelniej. Jeżeli nie masz jakiejś kosmicznej konieczności stosowania liczb...
Raczej nic to nie zmieni. W funkcjach variadic float jest traktowany jak double (zajmuje 8 bajtów lub 2 rejestry), stąd problem. Kompilator dba o stos podczas pracy programu, ale to co dostaje na wejściu musi być wyrównane do 8-miu bajtów. Jeśli chcesz znaleźć źródło problemów, to olej na chwilę FreeRTOSa i po prostu w jakimś programiku zwykłym przetestuj...
Witam! Podaję jedno z rozwiązań. [syntax=c]#include <stdio.h>/* tutaj funkcje we/wy */ #include <stdlib.h>/* tutaj funkcje losowe */ #include <math.h>/* tutaj funkcje matematyczne */ #include <time.h>/* tu funkcje dotyczace czasu */ #define PI 3.14 #define PRECYZJA 1000.0 int main(void) { int ilosc_krokow; int i; int a; double...
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...
%d służy do wyświetlania zmiennych typu całkowitego (integer). Masz kawałek działającego kodu: int main(int argc, char *argv[]){ float a1; FILE *fp; fp=fopen("Uklad_Rownan.txt"... printf("Wprowadz a1: "); scanf("%f",&a1); fprintf(fp,"%5.2f",a1)...
Witam. Mam pytanie jak w tytule: Czy jest jakaś funkcja zamieniająca zmienną typu float lub double na zmienną typu int? Pozdrawiam. Generalnie , nie można zmienić typu zmiennej , do końca jej "istnienia". Poza tym , czy nie chodzi Ci czasem o przypisanie wartości ze zmiennej typu float,double , do zmiennej typu int :?: Poczytaj o rzutowaniu. Piotrek
funkcja1(*p, *v, a); //wywal bo po co ci to funkcja2(&p, &v, a); //to tez wywal float funkcja1(fload p, float v, float a); //nie pisze sie srednikow //p i v powinno byc zdefiniowane jako &p &v { p=2*a*a*sqr(3); v=(a*a*a*sqrt(2))/3; } float funkcja2(fload p, float v, float a); //to samo co wczesniej { p=2*a*a*sqr(3); v=(a*a*a*sqrt(2))/3;...
Konwersję z liczby całkowitej na string łatwo można Sobie zaimplementować, implementacje funkcji itoa() też są dostępna, wystarczy poszukać w sieci: [url=http://en.wikipedia.org/wiki/Itoa]i... Część po przecinku też można wydobyć za pomocą itoa() wystarczy pomnożyć wynik przez wielokrotność 10 i zapisać go do integer. Warto ogólnie operować na liczbach...
wystarczy trochę poszukać w helpie: interesującymi Cię funkcjami są: _itoa, _ecvt, _fcvt, _qcvt z biblioteki stdlib.h
scanf zwraca w wyniku ilość poprawnie wprowadzonych danych, np: double liczba1; int wynik; wynik=scanf("%lf",&liczba&... w zmiennej wynik będzie wartość 1 jeżeli scanf poprawnie odczyta liczbe, lub 0, jeżeli tego nie zrobi, a np. w takim przypadku: scnanf("%lf%c%lf",&liczba1... scanf zwroci 0,1,2, lub 3....
Jeśli chcesz, żeby zaokrąglał zamiast obcinać to do zmiennej float dodawaj 0,5 i następnie rzutuj.
I mieć dużo flasha...
Wybredny jestes :). Tak tylko ja to zadanie musze zrobic bez uzycia bibliotek spoza STL Powiedziałbym nawet, że posunąłeś się jeszcze dalej. Nie tylko nic nie używasz z poza STL, ale również nie używasz samego STL-a :). Ok. – poznaj "power of C++" ;] Pierwszy samples – nie robi konwersji z kropek na przecinki – dzięki temu jest prostrzy:...
Obecnie aplikację testuję na PC, później zamierzam ją przenieść do telefony z ANDROID-em. Tam czytanie plików jest jeszcze trudniejsze. Myślę nad tym, aby zmienne zamienić na typ float - liczba danych zmniejszyłaby się o połowę. Ale i tak byłoby to za dużo - w Javie jest ograniczenie do 64kB, ja bym miał 160kB. Dodatkową trudnością przy wczytywaniu...
Druga sprawa, to natywna obsługa double (64-bit) przez FPU jest w ARMach CORTEX-M7, CORTEX-M4 natywnie obsługuje tylko float (32-bit). W ESP32 jest również natywny 64-bitowy typ double.
https://obrazki.elektroda.pl/4767840700_... Wczoraj opublikowana została nowa rodzina modeli Qwen3 oferująca rozmiary od 0.5B do 235B. Jej flagowy model, Qwen3-235B-A22B może z powodzeniem rywalizować z modelami takimi jak DeepSeek-R1, o1, o3-mini, Grok-3, i Gemini-2.5-Pro. Nowe modele Qwen3 obejmują zarówno modele dense , jak i typu...
https://obrazki.elektroda.pl/4269875400_... Oryginalny DeepSeek jest raczej za duży, by uruchomić go na domowym sprzęcie, ale repozytorium Ollama oferuje ciekawą alternatywę bazującą na dostrajanych (tj. trenowanych w oparciu o rezultaty większego modelu) modelach LLama i Qwen. Występują one pod nazwami deepseek-r1:1.5b/7b/14b/32b...
Tak się nie da niestety. Aby wołać funkcje kótre są w bootloaderze z alpikacji musisz mieć tablicę adresów tych funkcji w znanym sobie miejscu w pamięci (w tym że booloaderze). Np: [syntax=c] struct x; int func1(int, float); double func2(long long, double, float, struct x); /* * etc etc */ const struct { int (*func1)(int, float); double (*func2)(long...
https://obrazki.elektroda.pl/5502422400_... Witajcie moi drodzy Chciałbym zaprezentować tutaj drugą wersję mojego Arduino VGA Shield (nakładki na Arduino UNO generującej jednokolorowy obraz VGA i czarno-biały PAL/NTSC ) - tym razem wykonaną za pomocą elementów SMD , i z dodatkowymi układami na pokładzie ( expander portów MCP23016 oraz...
Postanowiłem pobawić się trochę możliwością flashowania z innego Bekena. NiceMCU, test UART. uartInit 115200 uartSendASCII Hello123 https://obrazki.elektroda.pl/6902920600_... Cóż, mogę wysyłać z BK7238 do PC, ale BK7238 nie widzi tego, co wysyłam z PC. Sprawdzam. Narzędzie do debugowania UART ma przekroczenie bufora. Prawdopodobnie...
volatile nie jest gwarancją, że w/w dodawanie wykona się niepodzielnie, (mówimy 'atomowo'), zwłaszcza że operacja jest względnie długa. W ESP32 można użyć typu atomowego wprost np. atomic_ulong, ale nie ma takiego wsparcia dla float czy double m.in. dlatego, że operacje na float/double wykonywane są przez FPU.
(at)ElektrodaBot W twoim kodzie serwo zamiast zamykać klapkę gdy poziom tlenu jest zbyt wysoki to serwo otwiera klapkę. Zauważyłem też, że serwo wykonuje ruch tylko w jednym kierunku a ma wykonywać w dwóch kierunkach [syntax=arduino]servoPosition - [/syntax] ( zamykanie klapy ) [syntax=arduino] servoPosition +[/syntax] (otwieranie klapy) Popraw te błędy...
https://obrazki.elektroda.pl/8287704400_... Witajcie moi drodzy Przedstawię tutaj mój projekt zewnętrznego wyświetlacza temperatury procesora z komputera. Wyświetlacz pokazuje temperatury od 0 do 99C, jednocześnie odpowiednio dobierając swój kolor. Wyświetlacz zrobiony jest samodzielnie od 0 w oparciu o diody WS2812B, sterowany jest...
Co to są cyfry znaczące w zmiennych rzeczywistych? Szukam przykładów zmiennych float, double float i long double. Nie rozumiem też dlaczego w zmiennych całkowitych istnieją INT i UNSIGNET INT jeśli ich zakres pokrywa LONG INT
Zaokrąglenia w liczbach zmiennoprzecinkowych to normalna rzecz. Użyj double lub long double ze wszystkimi konsekwencjami używania takiej zmiennej ale raczej nie w AVR-GCC. Sprawdź przy użyciu sizeof, czy AVR-GCC, które masz faktycznie obsługuje double i long double bo może być tak, ze to jedno i to samo, jak kiedyś long i long long. Na ARM float reprezentowane...
Witam Panie Krzysztofie Minął jakiś czas od naszych dyskusji na YT - miałem sporą przerwę przy pracy z projektem ale wracam do kontynuowania tematu. Po zmianie/przestawieniu stron (kolejności) podziały się problemy z którymi nie jestem w stanie sobie poradzić. Zegar, lampy i termometry śmigały aż miło i się skończyło :-( . Projekt generalnie dotyczy...
(...) User step type has %d phases and %d steps per cycle\n", num_phases_lut , i); return 0; } static CONTROL parse_ctrl_type(const char *ctrl) { if(!ctrl || !*ctrl || *ctrl == 'p' || *ctrl == 'P') return POSITION; if(*ctrl == 'v' || *ctrl == 'V') return VELOCITY; return INVALID; } Bezpośrednia odpowiedź na pytanie Przesłany kod nie jest w pełni poprawny...
float czy double jest przybliżeniem oczekiwanej wartości, a dwa przybliżenia tej samej liczby mogą być różne. Nie da się na float ani double zapisać np. takiej ładniutkiej i króciutkiej na papierze i ekranie liczby 0.1. Float użyty zamiast int jest dokładny tylko do 2^24. Jest parę jeszcze takich dość trywialnych prawd, z których większość pisaczy programów...
http://obrazki.elektroda.pl/5826537700_1... Poniższy opis prezentuje jak, krok po kroku, skonstruować prosty termometr oparty na mikrokontrolerze. Układ ten mierzy i wyświetla temperaturę powietrza. Nie jest to może najdokładniejszy termometr świata, ale jest dobrym projektem który zrealizować można w domu ucząc się jednocześnie np....
Stacja Pogodowa ESP8266 + wyświetlacz VFD https://obrazki.elektroda.pl/1002039200_... Zainspirowany stacją pogody kolegi vanaxis z tematu: https://obrazki.elektroda.pl/3997029100_... Jak nie może sie połączyć to wyświetla ekran poniżej i czeka: https://obrazki.elektroda.pl/4415212900_... Po zalogowaniu...
tą metodę i tak mi zostało. float i double sprzyja rozrastaniu się bajtów w kodzie Nie pojmuję twojego rozumowania. Przecież float to tylko 4 bytes w SRAM , a uproszczony kod programu zaoszczędza o wiele więcej pamięci FLASH. Co do przydzielania wielkości tego bufora Bierzesz tyle ile potrzebujesz. Wartość określająca rozmiar tablicy array musi byc...
https://obrazki.elektroda.pl/9593307400_... Stacja pogodowa na wyświetlaczu 240x128 ze sterownikiem T6963, Arduino Nano jako "sterownikiem" wyświetlacza i ESP8266 jako źródłem. Uzyskałem wyświetlacz z lekkim uszkodzeniem w postaci nieczynnych poziomych linii, wyeliminowałem te linie wykorzystując odpowiednie graficzne ułożenie (przerwy...
Operand modulo (%) działa tylko z liczbami całkowitymi, dla zmiennych o typie float/double musisz użyć funkcji fmod. Co ma sens ze względu na zapis liczby. BTW, na AVR typ double jest równy typowi float. No i nie używaj typu float do liczenia czasu, w wielu przypadkach uzyskasz bezsensowne wyniki, co jest związane ze skończoną reprezentacją zapisu liczby.
https://obrazki.elektroda.pl/7425086700_... Pokażę tu dwa praktyczne sposoby na pokonanie limitu długości odpowiedzi ostatnio bardzo popularnego ChatGPT. Oba sposoby są całkowicie darmowe, działają na publicznie dostępnym modelu oraz przede wszystkim sprawdzają się w praktyce, dzięki nim można generować naprawdę długie fragmenty kodów...
[syntax=c]#include <stdint.h> #include <unistd.h> #include <fcntl.h> #include <stdio.h> #include <string.h> #include <math.h> double M2F(char x) { return 440.0 * pow(2.0, ((double)x - 69.0) / 12.0); } int main(int argc, char *argv[]){ unsigned char midi[256*1024]; int maximum = 0; if(argc<2) { printf("MIDI (Type...
to już moim zdaniem szczyt lenistwa :/ sec(x) = 1/cos(x) cosec(x)=1/sin(x) i nie ma czegoś takiego jak "ec" :) hehe i podpowiedzi: -cosinus liczy funkcja: double cos(double x); float cos(float x); //[C++ only] -sinus liczy: double sin(double x); float sin(float x); //[C++ only] -liczba do potęgi: (np: x kwadrat) double pow(double x, double y); float...
float double stm32 float double pamięć system double
wtryskowy matrix antena 145mhz pralka polar wymiana grzałki
instrukcja serwisowa termet silver sterowanie bramą przesuwną
Mercedes radio – podłączenie kabli brązowy, czarny, szary do radia ISO (czarny, czerwony, żółty, pomarańczowy, niebieski) Wymiana głowicy w CF Moto 500 bez wyjmowania silnika