Niestety nie można operować na liczbach zmiennoprzecinkowych ( chodzi o funkcje matematyczne). Ale można np. pobrać liczbę zmiennoprzecinkową w formacie IEEE574 (konwersja automatyczna) z urządzenia zewnętrznego np. przez modbus RTU i przekazać ją do scady np przez modbus TCP , która potrafi odkodować format IEEE574 aby przedstawić wartość liczby z...
ale spodziewałem się, że w obu przypadkach wartości będą identyczne. A niby czemu? Skąd domniemanie, że kompilator używa w obu wypadkach tej samej biblioteki zmiennoprzecinkowej? sdcc/device/lib/_fsadd.c - dla '51 sdcc/device/lib/z80/_fsadd.asm - dla z80 Albert
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.
unsigned int *ple=(unsigned int*)&ulamek; wszystko jest ok, bo to mówi mniej więcej tyle, co "postaw wskaźnik na unsigned int na adresie zmiennej ulamek". Jeśli tylko zadeklarowałeś 'ple' nie definiując go, to musisz zmienić wskaźnik (czyli samo ple), a nie to co pod nim jest (czyli *ple), i ten wskaźnik postawić na adresie zmiennej ułamek (czyli &ulamek)....
Nie. Jak to sobie w ogóle wyobrażasz? Chyba, że byś sobie zrobił specjalną klasę do przechowywania dwóch floatów, ale to pachnie bezsensem. Może lepiej napisz, co próbujesz osiągnąć.
Zrozumiałem ;) Właśnie do tego służy funkcja printf o której napisałem. Trzeba określić format na float i precyzję na jedną liczbę. Na stronie manuala funkcji printf jest link do sprintf gdzie formatowanie jest dokładnie opisane. Pozdrawiam, Krzysztof.
najpierw trzeba pobrać łańcuch (text), czyli jakiś scanf("%s", str) potem sprawdzamy, czy pasuje do wzorca (w int n; float x; n=scanf("%f", &x); if(n<>1) printf("kaszanka\n"); Większość programistów, z tego co zauważyłem, nie sprawdza wartości zwracanej przez scanf, a to nie dobrze, bo scanf zwraca...
scanf("%f",&a); operator & określa adres zmiennej a, czyli wartość którą podasz zostanie zapisana pod tym adresem tak samo dodaj ten operator w pozostałych sccanf
zmień deklarację na na float liczba[2] deklaracja float liczba[1]; tworzy jednoelementową tablicę float cin>>float[0] jest poprawnie, ale cin >> float[1] już nie. -- Między innymi z takich powodów do nauki programowania polecam C#/Javę, a nie C++.
Nie szukałem jeszcze jak się konwertuje float do string'a, ale jak nic nie znajdziesz możesz skorzystać z pomysłu flapo213... Z tym, że w programie możesz sobie w każdej chwili rzutować dane na int. Jest to jednak bardzo obliczeniożerne, dlatego pewnie pracownicy microchipa nie poszerzyli printf o float'y. Więc możesz zrobić tak: float liczba=12.4;...
ODp2: Zeby wyswietlic folat na LCD musisz uzyc funkcji printf lub dtostrf ( polecam ta druga bo zajmuje znacznie mniej pamieci ) . Itoa i ltoa konwertuja tylko liczby staloprzecinkowe. Funkci dtostrf szukaj w stdlib.h w katalogu WinAVR, jest tam opisana. ODP1: Jak masz zadeklarowana zmienna p_gora_1?? Jesli nie float to zadeklaruj ja jako float, albo...
Gdzie jest błąd? Błąd wynika z założenia, że zawsze prawidłowo będą porównywane liczby typu float. Niestety tak się nie dzieje. Przyczyny są wyjaśnione pod tym linkiem: [url=https://embeddeduse.com/2019/08/26/... Jeżeli chcesz porównywać liczby typu float, to powinieneś to robić z pewnym marginesem (epsilon). Miłej lektury ;)
Cześć. Użyj funkcji prinf i odpowiednich przełączników. Przykład z http://www.cplusplus.com/reference/cstdi... : printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416); W twoim przypadku: [syntax=c]printf ("moja liczba = %f" , liczba);[/syntax] Albo zapis do buforu: [syntax=c]sprintf (bufor, "moja liczba = %f" , liczba);[/syntax]
To napisz jak duże chcesz te liczby bo float też ma ograniczoną "pojemność".
Cecha EA = -22 Cecha E6 = -26 wg algorytmu który podałem w moim pierwszym poście 0100 0000 0000 0000 0000 0000 * 2^(-22) 01,00 0000 0000 0000 0000 0000 = 1.0 kg -1kg 1100 0000 0000 0000 0000 0000 * 2^(-22) wniosek: najstarszy bit określa znak liczby, 1 - ujemna, 0 - dodatnia 0.1 kg 0110 0110 0110 0110 0110 0110 * 2 ^ (-26) 0,00011001100110011001100110...
AVR nie ma operacji na liczbach zmiennoprzecinkowych (float). kompilator musi je jakoś emulować. jeśli nie jest to absolutnie konieczne nie stosuj zmiennych float.
(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)
Np cyfra 1 w float to 0x803F w HEX, czyli 32821 dziesiętne. Kompilatory to liczą, ale ja potrzebuje sam to liczyć (programuje mikrokontrolery). Czy jest gotowy program (jakiś kalkulator), czy muszę sam go napisać? Jeśli liczby floating point są zgodne z IEEE 754, to możesz użyć np [url=http://babbage.cs.qc.cuny.edu/IEEE-... kalkulatora....
Dość prosto :) Wypróbuj taki kod : [syntax=delphi]program Project1; {$APPTYPE CONSOLE} uses SysUtils; var liczba : double; //dowolny typ zmienno przecinkowy pom : integer; wynik : string; begin liczba := 168032.123; pom:=trunc(liczba); // wartosc calkowita pom:=pom mod 1000000; //obciecie wszystkiego powyzej 6 cyfr wynik:=SysUtils.Format('%.*d', [6,...
Witam Dni+godziny+minuty+sekundy+..... - to liczba typu float, gdzie część całkowita to dni kalendarzowe. 0,5 to 12 godzin. Musisz zamienić datę na liczbę i odjąć 0.5.
Witam! krzychoocpp napisał: Nie jestem pewny czy obydwa rzutowania są potrzebne, chyba wystarcza tylko jedno. Masz rację wystarczy jedno rzutowanie: float f = (float)a / liczby; albo float f = a / (float)liczby; daje ten sam wynik; Pozdrawiam
-1.#IND00 oznacza nieskończoność(przekroczenie zakresu liczby float). Nie wiem jak ma działać program i co ma liczyć, być może gdzieś jest błąd w zapisie matematycznym. Dla wartości 0.1, 0.2. 0.3, 0.5, otrzymałem wynik 4.018673 Dla 2, 3, 4, 5 otrzymałem wynik "inf"(u mnie po kompilacji gcc wyrzuca "inf" zamiast "-1.#IND00")
...Kompilator to WinArm, gcc v. 4.1.1 A co koledze przeszkadza , w wykorzystaniu funkcji char *gcvtf(float VAL, int PRECISION, char *BUF); :?: Piotrek
Cześć. Jak odciąć określoną ilość miejsc po przecinku w danej liczbie??. Np: float a=12,343546575474 i chcę żeby dalej w programie liczba a równała się : a=12,343 . Dziękuję. Pozdrawiam.
Witam. Mam problem z wyświetleniem floatów na wyświetlaczu lcd, kod wygląda następująco: [syntax=c]ADCSRA |= (1<<ADSC) | (1<<ADIF); while(! ( ADCSRA&(1<<ADIF))); temperatura = ADC; temp=(float)temperatura*0.1445; temperatura_d= (int)stopnie; temperatura_p= (stopnie-temperatura_d)*10; temp=(int)(stopnie + 0.5); sprintf(buf,"temp:...
Jeśli dzielisz 2 liczby całkowite to kompilator z góry zakłada, że wynik również będzie liczbą całkowitą. Nie ma na to wpływu, że przypisujesz tą wartość do zmiennej typu float. Sprawdź sobie sam wynik działania:"1/11". A teraz dopisz "f" na końcu każdej liczby w Twoim dzieleniu - w ten sposób informujesz, że są to liczby typu float i będzie to uwzględnione...
Napisz co ma dokladnie robic ten program, podaj dane we i dla przykladu dane wy. Wtedy postaramy sie cos zrobic. Jesli chodzi o twoj kod wyglada na nieco nieprzemyslany, wiec nie bede go poprawial.
Oczywiście, że rozwiązanie lukego działa. Zawsze masz to samo pod s bo pewnie nie zwiększasz wskaźnika. A kolejne bajty nie odpowiadają Twojej liczbie bo to zapis liczby float w postaci 'komputerowej' - standard IEE-754. Popatrz sobie na: http://pl.wikipedia.org/wiki/Liczba_zmie... upanie
Ale jemu nie brakuje całego retarget, tylko sbrk, bo w newlib większość funkcji które robi coś z liczbami float alokuje dynamicznie pamięć. Dobrze, ale skoro mówimy o atoi i atof, to kolega bimbarabam pewnie nie wie, że może używać printf - powiedzmy z portem COM w roli głównej, albo zrobić sobie dostęp przez systemowe funkcje w stylu fopen/fread.......
Witam, niestety Logo! nie obsługuje funkcji matematycznych na liczbach zmiennoprzecinkowych, zostaje Ci tylko bloczek Float/Integer. Przy zastosowaniu tego bloczka możesz: - przekazać liczbę float na np. ekran TD - wykonać operację mnożenia liczby float, parametr Resolution (0.001 do 1000) - przy odpowiednim parametrze Resolution, operować w zakresie...
[syntax=c] float minnap=99; float maxnap=0; [/syntax] int od integer czyli liczba całkowita, potrzebujesz liczb zmiennoprzeciekowych - float. Popraw odpowiednio %i na %f w lcd.print, choć dla arduino może być inna obsługa wyświetlana liczb zmiennoprzeciekowych.
A to nie miało być bez tego przesuwania? Bo to x to zdaje się 16 starszych bitów liczby wejściowej...
[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.
BTSerial.write("48") działa ale liczba ma się zmieniać co chwile więc to nie przejdzie. Może tak (gdzie liczba to liczba całkowita): p to ilość cyfr po przecinku. Dodano po 3 [url=https://www.arduino.cc/reference/en...
#include <stdio.h> main() { int n; float sum=0; for(n=1;1/(n*(n+1))>0.0001;++n) sum+=1/(n*(n+1)); printf("Result: %f\n",sum); system("PAUSE"); } Grunt to dobry debugger ;) Mając takowy, sama byś doszła co jest nie tak. W tym kodzie zadeklarowałaś zmienną n jako integer. Robiąc operacje dzielenia (w pętli i sumie), oba argumenty (dzielna i...
Może rzutowanie wystarczy: [syntax=c]y = (unsigned int)(x + 0.5);[/syntax]
Najprościej: 1. mnożysz float *10, powstaje np zmienna "liczba"; 2. następnie "liczba" dzielisz przez 10 - masz zmienną "całe"; 3. na "liczba" wykonujesz dzielenie modulo 10 i masz ulamek. W przypadku całkowitych można też od razu rzutować na int, tak jak pisał kolega wyżej. Poskładać to do kupy z kropka pomiędzy za pomocą itoa() i już.
Masz rację aczkolwiek chciałem pokazać o co chodzi stosując dokładnie te same wzory co w dokumencie. Wyjąć wyrażenia z zawiasów zakładam że każdy umie
Odnośnie tablic chodziło mi jedynie o sposób deklaracji. Wiadomo, że deklaracja być musi, ale podczas dodawania do tablicy nie masz mechanizmu kontroli, czy dane nie wyszły poza zakres tablicy. Polecam nad tym pomyśleć :) Nagłówek. double loadit (FILE **f, float (*t)[100], float (*sinn)[100], float (*zaszum)[100])...
float oblicz (float liczby[N]) { int licz; float suma,srednia; for(licz=0;licz<=N;licz++) suma+=liczby[licz]; srednia=suma/N; printf("Srednia= %.2f\n",srednia); } Zajęło mi to niecałe 5 minut, więc wolałem to napisać sam niż tłumaczyć jak to napisać, program jest prosty, przeanalizuj go krok po kroku i powinieneś zrozumieć, bo moim zdaniem trudniejsze...
żeby coś zadziałało to musiało by wyglądać mniej więcej tak choć narazie nie mogę sprawdzić bo nie mam kompilatora żadnego na tym komputerze a 2 jest w naprawie :( int main() // nie wiem czy to miałeś na celu { float *c;//tutaj deklarujemy wskaźniki float *liczby; int x=0;//można szybciej i prościej niema takiego bałaganu cout <<...
Chyba za bardzo nie rozumiesz co się tu pisze. Spróbuj: char bufor[10]; void inline na_tekst(float liczba){ dtostrf(liczba,4,1,bufor); } main(){ na_tekst(temp); LCD_WriteText(bufor); }
Przyjrzyj się reprezentacji liczby float ze szczególnym uwzględnieniem liczby miejsc znaczących dla liczb pojedynczej precyzji, a sprawa stanie się jasna.
Jeszcze tylko jedno pytanie. Co Ci nie pasuje w tym ... równaniu ? (1* 256 +145)*0.0625 = 25.0625 Podstawą programowania mikrokontrolerów(i nie tylko) jest znajomość arytmetyki i to nie tylko na liczbach dziesiętnych ale również na liczbach binarnych i hexadecymalnych(szesnastkowych). Bez tego, ani rusz kolego :D Przecież taki kod (01000001110010001000000000000000)BIN...
Akurat nie o zmienne globalne chodzi... Chodzi o to że podając stałą do tych funkcji zostanie ona przeliczona na etapie kompilacji na ilość... napiszemy tików. Jeżeli natomiast podjesz zmienną do funkcji opóźnienia to niestety ale może ona z założenia może się zmienić w trakcie pracy programu i wtedy uC musi na żywo obliczyć ilość tych ticków. A jak...
Musisz mnożenie zrobić na liczbach rzeczywistych. float f; f = pomiar1; f *= 0.244; pomiar1 = (long) f;
Próbowałem przełączyć się na "oddzielny" kod dla bufora pierścieniowego - dzięki czemu możliwe byłoby użycie tego samego kodu dla różnych przypadków. Do tej pory int to 32-bitowa liczba całkowita - float jest "symulowany" jako liczba całkowita pomnożona przez 100 (więc może pomieścić 2 miejsca po przecinku i jest dzielony przez 100 podczas odczytu)....
void ultoa(unsigned long liczba,char* lancuch,char dlugosc) { char cyfra; while (dlugosc > 0) { cyfra = liczba % 10; cyfra = cyfra | 0x30; lancuch[dlugosc-1] = cyfra; liczba = (float)liczba / 10; dlugosc--; } } Powinno działać. A zwraca jakieś wartości z kosmosu. Dlaczego ? :> Dlatego: liczba =...
Zastanawiam się czy na aliexpress są gotowe moduły wyświetlacza liczbowego, sterowanych w łatwy sposób. Np poprzez wysłanie przez I2C liczby int/float do wyświetlenia. Przydałoby mi się coś takiego prostego żeby nie bawić się w obsługę wyświetlacza na uC za każdym razem. A najczęściej wyświetlacz potrzebny jest właśnie do wyświetlenia liczb lub stanów...
zapomnialo mi się o jego skłądni :D, pomogłem sobie sam hihi powinno być tak liczba+= (float) 143/100; co za kompilator :-)
Znaczy niby 15.0 to osobliwość? Przecież to normalna liczba float, można też zapisać 15f.
Ok, to zrobiłem. O ile dobrze rozumiem, zmienna double jest nie potrzebna, wystarcza float tylko pojawia się kolejne pytanie: Gdy chce zadeklarować zmienną pisząc pseudokodem - suma=cena_paczki+cena_towaru żeby w dalszej części programu nie wykonywać już zadania (cena_paczki+cena_towaru)/dolar tylko suma/dolar jak muszę ją zadeklarować? Wystarczy suma=cena_paczki+cena_towaru;...
Nie ma tak dobrze :). 1. Twój program po co dołącza iostream ?. using namespace std też nie jest na miejscu - i tak nie używasz std. 2. W zasadzie to program w C (jedyne co go odróżnia to int w pętli for) :) Ok. - machnąłem samplesik w C++ - pewnie będą niejasności - jeżeli będą to wytłumaczę. Programie przy odczycie sprawdza czy ma do czynienia z liczbą...
Poczytaj, co zwraca funkcja random ;) A w ogóle tablica int, wyświetlasz liczby jako float...
Skąd masz aź taki zakres liczb? Najpierw wyświetl część całkowitą, potem kropkę a potem resztę (odejmij od liczby jej część całkowitą) pomnożoną przez 10mln (to już też jako liczbę całkowitą).
Witam. Odpaliłem właśnie bibliotekę freemodbus na avr i potrzebuje informacji w jaki sposób zapisać w rejestrach Read Holding registers liczbę float. Rejestry Read Holding registers w tej bibliotece są uint32_t. Ogólnie w programie działam na liczbach całkowitych. Przykładowo mam taką wartość rzeczywistą pewnej zmiennej (5,25) to mnożę ją razy 100 i...
Funkcja z liczbami typu int działa poprawnie: [syntax=c]uint8_t pi = (uint8_t)M_PI; sprintf(tx_buffer, "Value of PI = %d", pi); DMA_Cmd(DMA1_Stream6, ENABLE);[/syntax] A na terminalu dostajemy coś takiego: Value of PI = 3 Natomiast z liczbami typu float działa ale tylko troche: [syntax=c]sprintf(tx_buffer, "Value of PI = %f", M_PI); DMA_Cmd(DMA1_Stream6,...
Ok, mam. Z jakiegoś powodu obsługa obliczeń na liczbach float w eclipse i biblioteka math.h zajmuje aż 3kB, podczas gdy kompilacja z makefile zabiera tyko 200B. Tylko dlaczego?
#include <iostream> using namespace std; float roznica(float liczba_1, float liczba_2) { return (liczba_1-liczba_2); } int main() { float a,b; cout<<"Kwota jaka zaplacic ma klient za towar: "; cin>>a; cout<<"Kwota, ktora zaplacil klient: "; cin>>b; cout<<"Suma...
Tam gdzie masz 32-bit Signed powinieneś móc wybrać Real albo Float, bo zamierzasz wyświetlić liczbę zmiennoprzecinkową. Bez skalowania. Aby wyświetlić Temperatura jadalnia VD509
Witam. Ogólnie tryb dostepu protected został stworzony dla dziedziczenia. Ale jak chcesz żeby pola były prywatne to do zwracania pola napisz odpowiednią metode. Np.: class pojazd { protected: int liczba_kol; float waga; public: pojazd (int a, float b):liczba_kol(a), waga(b) {} ~pojazd() {}...
Witam, Przejrzałem elektrodę i natrafiłem na temat o złożeniu w C przesyłanego bajt po bajcie floata. No i zastosowałem wskazany fragment kodu: [syntax=c]unsigned char *btr; float DNL; btr = (unsigned char*)&DNL; *btr =USART0_Receive(); btr++; *btr =USART0_Receive(); btr++; *btr =USART0_Receive(); btr++; *btr =USART0_Receive(); btr++;[/syntax] Kod ten,...
Nie analizowałem poprawności tego fragmentu kodu. Jednak jest to bardzo dobry pomysł. Zrób sobie funkcję, która w argumencie przyjmuje np. liczbę milisekund. Po napisaniu takiej funkcji sprawdzisz sobie jej dokładność na symulatorze i ewentualnie skorygujesz inkrementowaną/dekrementowaną wartość. Funkcje biblioteczne opóźnień, np: _delay_ms przyjmują...
Nie powinienem dawać gotowca, ale widzę, że często udzielasz się na Forum. W podanych kodach możesz wprowadzać liczby rzeczywiste. [syntax=cpp] #include <iostream> using namespace std; float liczba,mx=0; int main() { cout.precision(2); do { cout<<"podaj liczbe, podanie 0 konczy program "; cin>>liczba; if(liczba>mx) { mx=liczba;...
[syntax=c] #include<stdio.h> #include<conio.h> #include<ctype.h> #include<stdlib.h> #include<cmath> float e; float liczba=1.0,i=2.0; char pusty; int main() { //1 + 1/2 + 1/3 +...+ 1/n > e printf("Podaj liczbe/cyfre e:"); scanf("%f", &e); scanf("%c", &pusty); printf("\n"); while(liczba<e) { liczba= liczba+...
(at)m72 "Zakłócenia" są wprowadzane przez Serial.print(), a nie sposób konwersji. Jeżeli Serial.print() dostanie, jako argument wartość typu float, to nie jest w stanie wyświetlić poprawnie więcej niż 7 cyfr przed przecinkiem. Tak jak pisał kol. (at)_jta_ - zapis liczby float wprowadza ograniczenia ze względu na wielkość reprezentacji mantysy. print...
Dziękuję za pomoc - zastosuje zewnętrzne napięcie odniesienia oraz wzmacniacz operacyjny. Mam pytanie o liczby float. Jeżeli zależy mi na dokładności i nie ma znaczenia czy program zajmie 3% czy 30% pamięci to mogę użyć float czy raczej są inne sposoby obliczania liczb ułamkowych?
To co podałem to kompletne polecenie dla linkera. Jeśli korzystasz z kreatorów to musisz linkować nie -lprintf tylko plrintf, to -l dodaje AS.
Jak sumowac liczby typu float tzn. zmienno przecinkowe bo Suma() zwraca 0 ;/
LM311 jest pojedynczym komparatorem, na wyjściu otrzymujemy już gotowy sygnał przejścia przez zero, bez angażowania i tak znacznie już obciążonej Atmegi obliczeniami na liczbach float. Co do regulacji to jest ona grupowa... Proszę zajrzeć do kodu, a nie wysuwać pochopne wnioski szczególnie, że układ wykonawczy obu typów regulacji jest praktycznie identyczny.
literperhour1 i literperhour2 to liczby całkowite? Nie, to zmienne float
Usunięcie tablicy nie przyniosło oszołamiających efektów, choć poprawiło sytuację. Dane są wysyłane poprawnie do mniej więcej 32 czy 64-tej próbki, a ja chciałbym wysłać ich 255. Kolejne próbki po bodajże 64-tej znów są przekłamane. Nie wiem w czym piszesz, ale dziwnie działasz na wskaźnikach/adresach. Poza tym rzutując na unsigned char ograniczyłeś...
Sorry, nie zastanowiłem się dobrze i nie sprawdziłem. 32-bitowa reprezentacja liczby float wg standardu IEEE wykorzystuje 23 bity na mantysę. Daje to własnie ok. siedmiu cyfr znaczących. Czyli więcej się nie da. Prawdziwe double miałoby ok. 16 cyfr znaczacych.
Witam. int ma zakres do 65535 (unsigned int 0 - 65535, signed int -32768 - 32767 ), spróbuj coś pokombinować z unsigned long int lub z float.
Metoda siłowa wyglądałaby mniej więcej tak: #include "stdio.h" #define MAX_N 1000 float liczby[MAX_N]; bool liczona[MAX_N]; float suma; int N; FILE* plikwe; FILE* plikwy; void sprawdz_sume(int i, float suma_czesc) { if(i == N) return; liczona[i] = false; sprawdz_sume(i+1,suma_czesc); suma_czesc...
FPU w Cortex-M4 obsługuje TYLKO liczby float (32-bity). Pozatym - to jest KLUCZOWA sprawa - fpu_enable() musi być PRZED kodem który z FPU by korzystał, w przeciwnym wypadku HardFault. Być może dobrze by było fpu_enable() przypiąć do __low_level_init0/1(). 4\/3!!
Fakt, z tym write coś mi się pokręciło - miałem ciężki tydzień :) Co do floatów - chcesz je przesyłać binarnie? Liczby float są zwykle zapisane w pamięci w formacie IEEE-754 na 4 bajtach. Tu masz float liczba; write( fd_rs, &liczba, sizeof(liczba) ); Oczywiście, jakaś ramka jest wskazana, aby było wiadomo, gdzie dane się zaczynają i...
Witam. Masz zero, gdyż wynikiem działania na tych int'ach jest 3/4, czyli po zamianie na int - 0. Ja radziłem sobie w ten sposób, że w działaniu używałem liczby float, którą dla kompilatora jest np. 1 zapisana w takiej postaci - 1.0, czyli wynik = 1.0*(a+b)/c;
Panowie! Małe pytanko, jak odbywa się zgłaszanie przybliżenia liczby float? Np. uzywając funkcji printf zgłasza się to jeśli dobrze mi wiadomo w następujący sposób: %3.2f - dwa miejsca po przecinku. Natomiast ja chciałbym aby operacje na wcześniej zgłoszonej liczbie float odbywały sie na ścisle określonej precyzji. Chciałbym uzyskać wynik np. do dwóch...
Liczenie pieniędzy na liczbach typu float to wstęp do dużych kłopotów. pzdr -DAREK-
Witam. Mam następujący problem do rozwiązania.Muszę przesłać liczbę typu float przez RS232 do PC. Podejrzewam ze trzeba zamienić liczbę typu float na string (z tym nie powinno być problemu) a następnie wykorzystując bufor wysłać przez rs232.Problem jest taki; jak należy skonstuować bufor nadawczy. Wdzięczny będę za jakieś przykładowe kody programów.Dadam...
Poczytaj sobie trochę więcej o typach danych w C++. Nie możesz określić w taki sposób, że liczba ma być czterocyfrowa. Liczba to liczba, w pamięci komputera jest zapisywana w systemie dwójkowym i w inny sposób niż w dziesiętnym i nie możesz tak łatwo określić, ile ma cyfr. Poza tym, liczba float to liczba z przecinkiem, czyli możesz wpisywać tam ułamki....
nie, bo float zajmuje 4 i koniec. float ktory zajmowalby 1 bajt bylby totalnie bezsensu. 1 bit na znak, zostaje tylko 7 bitow na reszte. dajmy na to, ze byloby to 3 bity na mantyse i 4 na wykladnik, wiec powstalaby fascynujaca liczba ktora moglaby zawierac tylko cyfry 1-7 o 16 roznych wykladnikach. to by byl zart, a nie liczba zmiennoprzecinkowa. http://en.wikipedia.org/wiki/IEEE_754...
Witam, Mam problem z wczytaniem do tablicy typu float liczb z pliku. Wczytuje się tylko pierwsza liczba do pierwszego elementu tablicy, a potem jakieś dziwne znaki. Proszę o pomoc. [syntax=cpp]int wczytajLiczby(float *TAB) { fstream in; char plik=0; int j = 0; in.open("liczby.txt", ios::in); if (in.good()){ in >> *TAB; for (int i = 1; !in.eof();...
Witam, mam pytanie jak przeprowadzać obliczenia na liczbach short int. Załóżmy mam liczbę float = 0.12 i chciałbym przez nią pomnożyć liczbę short int. Rzutowanie nie wchodzi w grę tylko przesunięcia. Wiem, że mogę zrobić np 0.12 * 2^10 czyli przesunięcie w lewo o 10 bitów i potem przemnożyć z short int i znowu przesunąć o 10 bitów. Ale gdy będzie float...
40us, czyli jakieś 1200 cykli - wg mnie jest to bardzo dobry wynik jak dla obliczeń na liczbach float. Instrukcje "DSP" Ci nic nie pomogą, bo one są do liczb stałoprzecinkowych - trzeba by to zrobić zupełnie inaczej niż masz teraz. W każdym razie, w Microchipowej bibliotece "DSP" zapewne jest kod regulatora PID z wykorzystaniem możliwości tego układu,...
Jakiego bloku użyć, aby odczytać liczby 32 float- modbus rtu. PLC Carel C.Pco Konkretnie o licznik z tego tematu. https://www.elektroda.pl/rtvforum/topic3...
Witam! Ciekawi mnie, co jest na zakładce "Modbus"? Adres urządzenia w sieci oraz prędkość komunikacji. Niestety na nic innego nie starczyło już miejsca w pamięci programu. Co do liczb ułamkowych to w projekcie nie została użyta ani jedna liczba float. MODBUS pracuje na 16bitowych rejestrach a dane ułamkowe są to po prostu liczby całkowite które trzeba...
Witaj! Jeśli zadeklarowałeś typ zmiennej temperatury obsługujący liczby ujemne(float, int), to powinno zwracać liczby z minusem. Łatwo możesz sprawdzić serial monitorem. Inna sprawą jest typ wyświetlacza i biblioteka do jego obsługi.
Pierwsze, co przychodzi do głowy, to utworzenie funkcji, która jako argumenty przyjmie strumień i zmienną 'wartość'. Ilość kodu zmniejszy się o połowę. zastanów się, dlaczego użyłem metod width() i fill(). Dodatkowo, aby poprawnie konwertować liczby z całego zakresu typu int (32-bitowego), należy operacje przeprowadzać na zmiennych int o rozmiarze...
Poniżej przykładowe funkcje : 1. Wysyła liczbę float do pola tekstowego w Nextion [syntax=c]///////////////// wyslij_float(nr_strony_w_nextion, nazwa_pola np. "napiecie.txt", wartosc np. 50.45, ilosc_cyfr_po_przecinku np. 2); void wyslij_float(int page, String objekt, float wartosc, byte dokladnosc) { Serial.print("page"); Serial.print(page); Serial.print(".");...
Możesz też prościej: [syntax=cpp] float getFloat() { float f; while(! (cin >> f)) { cout << "Błąd, podany ciąg znaków nie jest liczbą! Wprowadź ponownie."; cin.clear(); cin.ignore(100,'\n'); } return f; } int _tmain(int argc, _TCHAR* argv[]) { cout << "Podaj liczbę: "; getFloat(); system("Pause"); return 0; } [/syntax]
W tej funkcji akurat lepiej nie używać wskaźnika na wskaźnik roboczy :) ale widzę że coraz lepiej Ci idzie. Pozwolę sobie poprawić tę funkcję dodając linijkę którą zgubiłeś przy wzajemnym wskazywaniu elementów oraz warunki zabezpieczające. [syntax=c] void dodaj_za_wskaznikiem(el_listy *roboczy, el_listy **ogon, float liczba) { if (roboczy = NULL) return;...
Gdyby on działał jak należy to bym nie pytał ;) Dopóki liczba jest mniejsza od 10 (robię dzielenie mod 10) to zwraca poprawny wynik. Natomiast, jeśli na przykład liczba jest równa 12, to w wyniku otrzymuję 0x0C. Dlaczego ? :> Wkleję kod, w którym to stosuję : void ultoa(unsigned long liczba,char* lancuch,char dlugosc) { unsigned char cyfra;...
Czy przypadkiem K to nie INT, E to FLOAT, L to DOUBLE? Nie jestem pewny, ale czy obsługa float nie zależy też od CPU? https://obrazki.elektroda.pl/2103278700_...
Tak po dodaniu f liczba traktowana jest jako float napisał już o tym w tym wątku Krotki. To f na końcu informuje kompilator żeby liczbę traktował jako float a nie double :) Pomaga też rzutowanie, ale jednak lepiej dodawać f:P
Funkcja Dec2Bcd zamienia liczbę ba kod BCD. Gdybyś nie wiedział to funkcja dająca odczyt z czujnika SHT75 daje liczby typu float. A ja nie pisze progamu na PC-ta, muszę optymalizować zużycie pamięci.
Witam proszę o pomoc, dostaję błąd Segmentation falut w momencie kiedy używam przeciążenia operatora <<. Program robi operacje na liczbach zespolonych plik zespolone.cpp [syntax=cpp] #include "../inc/zespolone.h" ostream & operator<<(ostream &wyjscie,LZespolona &liczba) { if(!(liczba.Re==0)) cout << liczba.Re; if(liczba.Im)...
[syntax=c] #include <stdio.h> #include <conio.h> main() { float min, max float liczba,srednia,suma=0; int i=0,n; printf("\n Podaj ilosc liczb: \n n = "); scanf("%d",&n); if(n>0) { do { printf("\n Podaj liczbe: "); scanf("%f",&liczba); if (i==0) //przypisanie poczatkowych wartosci min i max min = max = liczba; else //wylapanie...
mnożenie liczba float zaokrąglać float float konwersja
regulacja fazowa grupowa radius konfiguracja instrukcje obsługi bosch zmywarki
Olej do skrzyni biegów Goldoni Uno Bingo: ile wlać? Wybór płyty indukcyjnej dla 6-osobowej rodziny