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...
liczby zmiennoprzecinkowe są małej dokładności. Tam dajmy na to 100 000 000 000 000 a 100 000 000 000 001 to zbyt mała różnica, przez co jedna z tych liczb nie istnieje w takim systemie zapisu. Stąd zapisując niejako kolejne liczby w systemie cecha-mantysa uzyskuje się ciąg, który w uproszczeniu przedstawię (w systemie dec 1 bit mantysy i 1 byt cechy)...
Zrobiło się 20 bo liczba 131232323.7 zapisana jest jako 1.3123232e+008 (= 131232320.0) Polecam podwójną dokładność - double. [syntax=cpp]double a = 131232325465465.755; if( a == double( (long long)a) ) //sprawdzamy czy całkowita printf("%.0f",a); else printf("%.1f",a); [/syntax]
[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.
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,...
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.
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.
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...
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;...
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
Witam a może tak: [syntax=cpp] uint16_t liczba; uint8_t calkowita, ulamkowa; liczba = 1234; calkowita=liczba/100; ulamkowa=liczba%100; [/syntax] wtedy w oddzielnych zmiennych mamy cześć całkowita i cześć ułamkową. a obcinamy ostatnią liczbę instrukcją [syntax=cpp]ulamkowa=ulamkowa/10;[/synta...
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...
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...
Zagadnienie, o które pytasz, nazywa się formatowaniem wewnętrznym. string pi_string("3.1415926")... istringstream we(pi_string); float pi; we >> pi; if( we ){ cout << "Konwersja poprawna, pi = " << pi << endl; }else{ cout << "Błąd konwersji!" << endl;...
https://obrazki.elektroda.pl/6510354700_... Witajcie moi drodzy. Pokażę tu wnętrze inteligentnego gniazda Tuya LSPA9 które oferuje pomiar zużytej energii elektrycznej oraz sterowanie przez WiFi, a następnie omówię jego wewnętrzny protokół komunikacji z układem scalonym mierzącym energię elektryczną. Następnie pokażę jak zaimplementowałem...
Użycie == lub >= (gdy faktycznie celujesz w wybraną wartość) z float traci sens. Używanie operatorów == oraz != na wartościach float generalnie nie ma sensu, ponieważ wynik działania jest nieokreślony i wynika ze sposobu reprezentacji tych liczb. Dodano po 7 Jednak zamiast używać delay(dht.getMinimumSamplingPeriod()) użyj funkcji millis() do okresowego...
if ((x >= '65') && (x <= '90')) { Dwie sprawy: 1. Nie jesteś w Pascalu więc nawiasy przy warunkach są zbędne. 2. Zapis w pojedynczym apostrofie dotyczy pojedynczego znaku więc piszemy np. 'a', 'b', ..., 'z' itp. dwa znaki występują tylko przy znakach specjalnych np. '\n' - znak końca linii. scanf ("%c", &x); Od kiedy w ten sposób...
Zakładając, że mamy do czynienia z liczba 4-cyfrową to ten kod by wystarczył, ale ja spodziewam się trzycyfrowej. Swoją drogą dla liczby 4-cyfrowej obie wersje kodu są chyba poprawne np: 1724 temp_dzi = (temp_wysw % 100) / 10; 1724 %100 = 24, 24 / 10 = "2" temp_dzi = (temp_wysw / 10) % 10; 1724 /10 = 172, 172 %10 - "2" Sprawa podanych przez Ciebie...
Wbrew pozorom te liczby wcale nie są duże. W arytmetyce zmiennopozycyjnej bezwzględna wielkość liczby jest bez większego znaczenia. Każda liczba jest sprowadzana do postaci mantysa+wykładnik, a mantysa w standardowym zapisie zawsze jest liczbą z zakresu 0-0,5. Tu też leży źródło problemów. Aby przeprowadzić dowolną operację arytmetyczną w pierwszej...
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....
Problem mieści się w dwóch błędach w powyższym progrmie. 1. Po powstaniu błedu może być nieco więcej ustawionych bitów błędu, a to przy kolejnej próbie wywołania std::cin.operator>> może powodować rezygnację z wykonania kodu i kolejne zgłoszenie błędu. 2. Po wyczyszczeniu flagi nie jest czyszczony bufor strumienia, czyli nadal zawiera on niepoprawny...
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)....
Wartość zmiennej wysyłanej z komputera poprzez terminal czy przez BTH jest przechowywana chwilowo. Warto wykorzystać SwitchStatement do setowania np. innej boolowskiej. W twoim przypadku będzie to mniej więcej tak: [syntax=c] int Data, wartosc = 0; bool strob_b; void setup() { Serial.begin(9600); pinMode(5, OUTPUT); } void loop() { if (Serial.available())...
https://obrazki.elektroda.pl/8663544600_... We współpracy z TME testujemy i uruchamiamy nowe Integracja Pico2 z Arduino jest bardzo prosta, otwieramy File > Preferences -> Additional Boards Manager URLs i dodajemy url https://github.com/earlephilhower/arduin... https://obrazki.elektroda.pl/1149548700_...
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]
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ąć.
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
Problem z pomiarami jest przy małym wypełnieniu np. gdy jest pochmurno. Zmniejszenie częstotliwości pwm faktycznie poprawiło odczyty. Dla majsterkowiczów wstawiam kod. Proszę pamiętać, że wykorzystując tylko "dolny klucz" IR2104 sygnał pwm mamy odwrócony, czyli pwm 99% z arduino daje 1% na mosfet. Program obsługuje 4 wątki. 1. Odczyt ADC 2. Wysterowanie...
Witam, Poszukuję metody napisanej w C++ która zamienia liczbę Hexadecimal na float (hex to float). Do tej pory znalazłem kod: unsigned char adres[4]; //bo float ma 4 bajty unsigned char *wtab = adres; float liczba = 15.6; *(reinterpret_cast<float*>(... = liczba; //do z rzutowanego wskaźnika char na float przypisujemy...
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();...
https://obrazki.elektroda.pl/7640927000_... Dzisiaj pokażę jak można postawić na Arduino R4 WiFi prostą stronę WWW wyświetlającą zebrane przez nas pomiary na ładnych, czytelnych wykresach. Być może przyda się komuś to do projektu typu czujnik temperatury, pomiar zużycia energii czy tam stacja pogodowa. Wykresy będzie rysować dobrana...
(at)fachman1964 Przepuściłem ten kod przez Qwen z opcją refaktoryzacji "Advanced C++23". Dla AVR nie ma dostępnej std, więc wiele nie mógł zrobić, ale wynik moim zdaniem jest całkiem OK. Miłej analizy ;) [syntax=c]#include <TM1637Display.h> #include <OneWire.h> #include <DallasTemperature.h> #include <EEPROM.h> // ========================================...
Witam zainteresowanych tematem. Pare dni temu przypadlo mi wykonac polaczenie po WIFI z inwerterem ES5000. Na pokladzie jest plytka z wyjsciem do komunikacji RS485 . Plytka jest tak wykonana ze ma pelna izolacje od inwertera i ma stablizator napiecia z 12V na 5V na LM a nastepnie przetwornica izolacyjna po ktorej jest drugi LM stablizujacy napiecie...
Dzień dobry, udało się rozwiązać temat, użyłem silnika Arduino jako biblioteki w ESP-IDF oraz biblioteki STM32duino VL53L4CX do Arduino. Bibliotekę STM32duino VL53L4CX skopiowałem ręcznie do ESP-IDF. Tak wyglądają moje pliki: https://obrazki.elektroda.pl/2499996100_... Mamy tutaj bibliotekę arduino, vl53l4cx (STM32duino VL53L4CX) oraz...
1. Wielu programistów uważa, że float - to liczba rzeczywista. No i bardzo się mylą, z czego wynika mnóstwo kłopotów. Niedouctwo. 2. Niby większość współczesnych procesorów, w tym Cortex-M4, liczy na float równie szybko, jak na int, a taki np. Intel Core mnoży i dzieli double sporo szybciej niż int. Za to konwersja w obie strony.... - na tym naprawdę...
float pulse_frequency; - powinien być volatile bo jest operacja na przerwaniu. Ale ja właśnie potrzebuję aby mieć chociaż jedną liczbę po przecinku To w czym problem zrobić pulse_frequency -liczbą całkowitą i tak na przerwaniu jest inkrementacja zmiennej o liczbę całkowitą A w literperhour = (pulse_frequency * 60 / 7.5); Czemu nie przyjąć za punkt oszukania...
Udało mnie się zastosować kod zaproponowany przez (at)efi222, natomiast w funkcji void Cyfry musiałem zmienić typ argumentów na int8_t żeby objąć też liczbę -1 po ostatniej dekrementacji. Przy przenoszeniu kodu posiłkowałem się też innym tematem na elektrodzie https://www.elektroda.pl/rtvforum/topic3... gdyż dotychczas stosowałem tylko timery...
Poniżej propozycja kodu z uzględnieniem poprawek od Gemini 3.0 :D [syntax=c]/* * PROJEKT: Christmas tree light controller /open software/ * AUTOR: Project promoter: AI - CzatGPT Code5, Reviewer of a scientific work: Deepseek: * DATA: 2025 * WERSJA POPRAWIONA: Korekta logiki efektu 3 i optymalizacja efektu 6 (komety). */ #include <FastLED.h> //...
http://obrazki.elektroda.pl/2126980700_1... System monitorowania środowiska, oparty o interfejs LoRa IoT składa się z stacji bazowej zbudowanej z wykorzystaniem modułu Arduino Mega z bramką LoRa oraz zdalnych stacji opartych na Arduino Feather, które łączą się z stacją bazową poprzez radiowy interfejs LoRa. System pozwala na monitorowanie...
Zrób rzutowanie dzielonych liczb na floaty.
Wymyśliłem taki kod i właśnie testuję : unsigned long countPulses(int pin, unsigned long durationMs) { unsigned long startTime = millis(); unsigned long pulseCount = 0; while (millis() - startTime < durationMs) { if (digitalRead(pin) == HIGH) { pulseCount++; while (digitalRead(pin)...
są to belki na power ledach ,drivery itp.Do tej pory wszystko pracowało przez kilka lat na jednym kanale PWM kótry rozjasniał belki ledowe w ciągu 60 min.Chciłbym to teraz przerobic na 4 niezależne kanały z potencjometrami abym mógł sobie regulować różne pasma Dodano po 21 Chciałbym uzyskać coś takiego[syntax=arduino]// Definiowanie pinów const int...
OK. Wszystko rozumiem. Nie wiedziałem o tym makro, również o innych które namierzyłem. Muszę popróbować pisząc jakiś kod. ( zainteresowanie moje wynikało z tego. że zastanawiałem się, o co chodzi z podwójnymi podkreślnikami "__"w plikach *.h.) Ale mniemam że, tyczy to bardziej kompilatora. To nie moja "liga". Daje spokój. Narazie muszę dokończyć ten...
Nacisnąłem autotest PowerSet / kalibracji i po prostu działa: https://github.com/openshwprojects/OpenB... Działa również z liczbami niecałkowitymi: [syntax=c] void Test_EnergyMeter_BL0942() { SIM_ClearOBK(0); SIM_ClearAndPrepareForMQTTTesting("miscD... "bekens"); PIN_SetPinRoleForPinIndex(9,...
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...
Piszę program na mikrokontroler , jedna z funkcji działa z argumentem float zmieniając jego wartość. Okazało się że z powodu zaokrągleń nie dostaję np. 3.1,3.2,3.3 itd ale 3.1, 3.199, 3.3, 3.3999 itd. Skutkuje to problemami przy wyświetlaniu cyfr na wyświetlaczu siedmiosegmentowym 3-cyfry. Jak poradzić sobie z kwestią zaokrągleń ? //--------------------------------------...
Witam wszystkich serdecznie. Właśnie rozpoczynam przygodę z Home Assistantem. Chcę zintegrować mój panel pokojowy (termostat) z HA i powiem szczerze nie wiem jak się do tego zabrać. Próbowałem coś znaleźć w sieci, ale kiepsko mi idzie. Producent podaje takie informacje: Pilot R WiFi nie jest modułem internetowym jednakże umożliwia komunikację w sieci...
REAL i FLOAT to w zasadzie to samo, czyli liczba zmiennoprzecinkowa. Między różnymi urządzeniami zmienia się tylko sposób zapisu tej liczby w bajtach, więc prawdopodobnie musisz te bajty w przeczytanych rejestrach poprzestawiać i dopiero rzutować na typ REAL do PLC. Jeśli podasz zawartość tych dwóch rejestrów w INT oraz jaki ma być wynik REAL to można...
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ć?
pisze program na mikrokotroler,w wyniku obliczenmam liczbe float ,chce ten wynik prezslac przez rs232 do kompa ,w tym celu potrzebuje rozbic go na slowa 8 bitowe ,jak to zrobic? w przypadku liczb calkowitych nie ma problemu natomiast tutaj nie moge zastosowac prezsuwania bitow.
Cześć, mam problem z obliczeniami w języku C. Ustawiam zmienną float i podstawiam proste obliczenia tj. float t; t=(20/100)*45; Chcę uzyskać wartość całkowitą z tej liczby więc rzutuję na nową zmienną unsigned int i; i=(unsigned) t; Nie uzyskuje tej liczby. Dlaczego?
mnożenie liczba float zaokrąglać float float konwersja
oporność głośnik układ presostatu cichy załączać satel alarm
edc17c46 schemat scania adblue
HP ZBook 15 wyłącza się po kilku sekundach - przyczyny i rozwiązania Czy tranzystor traci hFE z czasem? Analiza pomiarów