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.
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...
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.
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)
w cout jest metoda bodajże point() ustawia miejsce przecinka w liczbach.
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/...
Co to za studia kończysz, chyba nie techniczne? W takiej sytuacji do przechowywania temperatur użyj najnormalniej w świecie typ int (int16_t / uint16_t w zależności od zakresu temperatur). Jeśli rozdzielczość odczytów masz 0,1C to przechowuj wartość dziesięciokrotnie większą pamiętając, gdzie jest przecinek. Na przykład dla 20,8C przechowujesz 208....
(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)
Pokaż proszę fragment swojego kodu, którym wyświetlasz ten float na wyświetlaczu.
Rzutowanie zmień na takie coś to będzie prawidłowo liczyło średnią (tzn. z miejscami po przecinku): [syntax=cpp]Srednia=((float)SumaOcen/(fl... A co do liczniki to działa jak jest na pisane: [syntax=cpp]if(Oceny[i]<3){++Licznik;... tzn jeśli i-ty element tablicy oceny jest mniejszy od 3 to zwiększ wartość licznika...
Wygląda nieźle, przy czym jeśli dobrze widzę (a nie znam simensa) mnożysz liczbę z zakresu 0-25 przez 10 a potem oczekujesz 2500, to mi się nie zgadza. Chyba że konwerter float->int wstępnie też mnoży przez 10 (pomija przecinek) Ten tasiemiec liczników dobrze jest rozbić na pojedyncze wiersze, jak trzeba to dodać bity pomocnicze, chyba że jesteś na...
Trochę obejście tematu ale działa. Do wartości float deszcz = (data.rain); trzeba dodać 0.01 w przypadku jednego miejsca po przecinku. float deszcz = (data.rain)+0.01; Przykładowo gdy data.rain = 0.3 to po intach będzie 0.29 czyli wyświetli 0.2. Po dodaniu 0.29+0.01 będzie wyświetlało 0.3. Przy np. 0.6 dodamy 0.01, to będzie 0.61, czyli wyświetli i...
To da, że kod będzie bardziej czytelny. Takie sklejanie stringów jak zrobiłeś jest trudniejsze do analizy. Poza tym stosując parametry zapytanie jest odporne na SQL Injection Link. Plus: nie musisz się przejmować zapisem typów danych (czy w apostrofach, czy bez) i aplikacja będzie działać na różnych ustawieniach regionalnych - bo zamieniając przecinek...
Witam ponownie. Uporałem się z podwójnym buforowaniem, przez co obracający się sześcian wygląda przyjemnie, dopisałem też kilka efektów: Oto cieniowanie Gourauda ze światłem świecącym z przodu. Świetna robota. Do obliczeń 3D używałeś zmiennego przecinka (float/double w C) czy arytmetyki fixed point?
Musisz użyc wstawek assemblera. Albo pozostac przy float-ach...
Szukam jakiegoś prostszego, lepszego sposobu na dany problem :) Pytanie na czym polega "lepszość" sposobu. Jeżeli ma być maksymalnie bezwysiłkowy, to o ile GCC na AVR-y posiada bibliotekę standardową (tego nie wiem), zastosować można fukncję sprintf(), np. w taki sposób: char buf[32]; // trochę długość na zapas, ale nie wiem jaki zakres liczb...
Tak, jak masz to teraz zrobione, po wyeliminowaniu błędów, liczba np. 1.001 będzie wysyłana jako 1.1. Raczej pomnóż liczbę zmiennopozycyjną przez np. 10000, potem zamień na całkowitą, następnie na postać znakową i podczas wysyłania wstaw w w odpowiednim miejscu kropkę/przecinek.
Użyj liczb stałoprzecinkowych. Użyj zmiennych całkowitych i wykonuj operacje na wartościach 100 razy wyższych niż rzeczywiste. Przy wyświetlaniu po prostu wstaw przecinek w odpowiednie miejsce.
Witam, chciałem sobie napisać program, który przelicza walutę. Ale jak się wpiszę np. 3,14 to przerywa program, a jak wpiszę 3.14 to jest ok, zapewne chodzi o ten przecinek i kropkę. I chciałem się zapytać co można zrobić, żeby nie wywalało z programu po wpisaniu błędnego formatu? Wczytaj stringa , zastąp przecinek kropką i wtedy zrób konwersję na...
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,...
Odpowiedź na pytanie z 1 postu: int val = 123; printf("U=%d.%d", val / 100, val % 100); Co do meritum: czy kod float nap1; nap1 = 257 * 0.0048; także obcina po przecinku? Jesteś w stanie sprawdzić jaki kod generuje kompilator?
Jeżeli w sterowniku masz liczbę całkowitą to zamiana na liczbę zmiennoprzecinkową nic ci nie da bo zamiast 20 otrzymasz 20,0 a z 21 otrzymasz 21,0. Co to za poprawa ? Chyba że dla 21 ktoś w sterowniku wpisał 210 a dla 21,5 wpisał 215. Wtedy na SCADZIE albo przesuwasz przecinek albo zamieniasz na float i dzielisz przez 10. Chyba że źle ciebie rozumiem...
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.
Cześć. W nowej wersji fajna jest funkcja oblicznia kątów widzenia na podstawie długości ogniskowej. Nie mogę jednak wstawić kropki, a przecinek jest uważany jako error: invalid float... Pozdrawiam.
Dokładnie tak. Kompilator wykonuje dzieleni całkowite, stąd problem. Swoją drogą, po co ładować float i specjalną wersję sprintf dla tak prostej czynności? Nie prościej pomnożyć result*1000 i podzielić przez 8192, wykonując operację na liczbach całkowitych? Na koniec tylko odpowiednio wyświetlić przecinek i cała operacja jest o jakieś 7kB krótsza i...
Serial.print(literperhour, DEC); po co masz to DEC? Wywal, jak nie pomoże to zapisz 60 jako 60.0. Jak drukujesz Serial.print float to po przecinku podajesz ile miejsc ma wydrukować, a dla int czy ma być binarnie, hex czy DEC.
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...
bardziej interesuje mnie te dwa pozostałe parametry tj display.print(int(flowRate)); oraz display.print(totalMilliLitres/1000);. Jak wyświetlić te wartości po dwóch miejscach po przecinku, bo jak zrobi się już dwa to nie będzie problemu zmniejszyć na jeden. I wartości na minus tutaj nie będzie bo jest to przepływ wody czyli zawsze dodatni. Analogicznie...
Mam dwa bajty w hex o wartościach 0xB5 0x00 i wiem tylko tyle, że w zapisie dziesiętnym powinno mi to dać 12,36. Tak jak koledzy wyżej piszą, potrzeba więcej informacji. Z tych dwóch bajtów sposobów na przełożenie na owe dwanaście z kawałkiem jest milion i każdy zły. Albo to nie jest dwa bajty a osiem, wówczas to będzie zapis float, wykladnik i mantysa....
float normalized = 1.0 * x / INT32_MAX; To mnożenie przez 1.0 jest tu do czegoś potrzebne? Konieczny trick w tych językach, inaczej wejdziesz na pole minowe dzielenia stałoprzecinkowego. Rzutowanie na zmienny przecinek też by było ok (i chyba bez różnicy w wydajności)
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. :)
Jak uniemożliwić wprowadzenie liter do zmiennej float? Najprościej - pobieraj znaki pojedynczo i filtruj tylko to, co chcesz żeby było dozwolone. Przy okazji rozwiążesz słynny problem kropki/przecinka. Jednak podany tekst wyświetlany jest tylko do spacji. Związane jest to z działaniem funkcji scanf - poczytaj dokładnie jak się ona zachowuje (jak są...
Panowie ja mam troszkę inny problem z konwersją. Konwertuje mi ale tylko do dwóch miejsc po przecinku. Czego to może być wina? Ja potrzebuję cztery miejsca. Zawsze mogę przecinek przesunąć a potem podzielić liczbę przez 100 ale wolałbym tak nie robić. Wszystko z tego tematu i tego z linka próbowałem i ciągle to samo. Konwertuje mi z łańcucha tylko dwa...
30. to raczej nie będzie float, bo pytali o liczby całkowite Ale jak dzielisz 2 liczby całkowite, np. 5/7 to jaki wynik Ci wyjdzie? Musisz to przewidzieć że będzie liczba po przecinku, dlatego float jest tutaj dobrze. Czy ktoś może podać jakieś logiczne wytłumaczenie zadania 46? Brałbym pod uwagę odpowiedź A prócz zmęczenia wzroku. Może macie to w...
x = round(x * 100) / 100; 4\/3!!
Może w ten sposób ? [syntax=python]while True: a_str= raw_input('podaj dlugosc boku a ') if a_str.isdigit(): break a = float(a_str) [/syntax] P.S.: Piszę z "palca" i nie mam nawet Pythona, żeby to sprawdzić, więc nie krzycz na mnie, gdyby gdzieś brakowało jakiegoś przecinka czy coś :P
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ę...
Pomysł wydaje się być dobry ale niestety po odejmowaniu zmienna przyjmuje wartość zero zamiast wartości po przecinku.
Gdyby ktoś z forumowiczów był zainteresowany jeszcze kiedyś dobrym programem czujnika SHT11 to wstawiam. Pomiary mam co niecałą sekundę i w normalny dzień pokazuje wilgotność około 45-50%, do tego temperaturę mierzyłem również SHT11 i czujnikiem DS18B20, wyniki takie same. Odczyt OK ;) [syntax=c]GLCD_WriteStringXY("Pomiary:",... ShtReset(); _delay_ms(25);...
Dla mnie Twoj sposob jest przekombinowany. Masz 776.502, mnozysz przez 1000 a dodajesz przecinek... Funkcja sprintf sluzy wlasnie do zamiany np float do postaci ASCII, ktora potem mozesz wyslac na wyswietlacz. Chyba, ze Twoja funkcja wyswietlajaca dziala na wartosciach typu int. Ale tego nie wiemy bo nie pokazales tej funkcji. BF
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);
Jeśli potrzebujesz jedną cyfrę po przecinku to : Wynik = Float * 10 Wynik zapisz do zmiennej typu Int. Nie programuję w Arduino , ale to chyba dokona niejawnego rzutowania na Int. To z przykładowej wartości 58,7 zrobi 587. Potem już sobie "pykasz" na przykład Modulo 10 :D
jak zapisać float zmienną żeby była wyświetlana jako wartość z przecinkiem ?
Skoro jest Serial.print(float); to gdzie są dwie liczby jeszcze po przecinku?? to są surowe wartości z adc
Można też kombinować inaczej. Tzn zapisać sobie osobno część całkowitą i osobno to, co mamy po przecinku.
Mam pytanie co do pritfa i floata - jak sformatować tekst, aby %f wyświetlało zawsze tak wynik, że przecinek był w tym samym miejscu niezależnie od tego czy liczba przed przecinkiem jest jedno czy dwu cyfrowa? chodzi mi o to samo co w przypadku %2d - wtedy jednostki są zawsze w jednej kolumnie jeśli wyświetla się wartości jedna pod drugą. Powiem tylko,...
float wart; scanf(f,"%f\n",&wart); JEst najwygodniej. Ew prawie jak zapisałeś: std::ifstream someVarName("data.txt")... float fl; char temp[100]; someVarName.getline(temp, 100); fl=strtof(temp); Co do przecinka - ustaw zmienną extern char DecimalSeparator PS. Jaki to kompilator, bo w...
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...
Z floatem jest troche więcej zabawy void WpiszLiczbe(unsigned char dx,unsigned char dy,Zmienna *ptr,unsigned char typ) {float dana_calkowita;float dana_ulamkowa;Zmienna dana; unsigned char znak; unsigned char tab[17]={0x30,0x30,0x30,0x3... unsigned char *ptrtab=&(tab+10);...
float wynik = (religia + j_polski + historia + wos + j_niemiecki + j_angielski + fizyka + matematyka + chemia + biologia + geografia + informatyka + muzyka + w_f) / 14 ; 14 zmień na 14.0 tyle że będziesz miał 3 miejsca po przecinku Pozdrawiam
Witam Musisz zmienic int na float sprintf(TX_buffer,"%4.2f",(float)(0.015*... %4.2f cztery cyfry w tym 2 po przecinku. Cos takiego... nie wiem czy to rzutowanie na float jest potrzebne przy read_a2d ale nie zaszkodzi. Pozdrawiam
Biblioteka jest uniwersalna i zwraca wartość temperatury i RH jako float, ma to jakiś sens (większy miałby int x 10 czy x100) dla innych lepszych czujników, niestety dla DHT11 jest to i tak zawsze liczba całkowita, czy tam float z zerami po przecinku, dlatego nie ma sensu przyjmować histerezy mniejszej niż 1oC (ktoś nawet napisał o tym posta, ale szybko...
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...
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.
Jakaś zmienna zmiennoprzecinkowa: "float" lub jeśli będziesz korzystał z biblioteki math to wtedy lepiej "double". Trzeba tylko pamiętać że jest to dość "kodożerne". Wiąże się to z działaniami na zmiennych wielobajtowych. Z tego co testowałem avr-gcc w tym zakresie, to jak chcesz oszczędzić pamięć programu lepiej przechodzić na stały przecinek. Ma to...
1. Wyrzuć wszystko, co ma cokolwiek wspólnego ze zmiennym przecinkiem - zmienne float i formaty w printf. 2. Wyrzuć strlen z procedury wyświetlanai napisu - w pętli wyświetlaj znaki aż do bajtu 0. while (*p) send_char(*p ++); 3. Masz błędną obsługę przerwania UART. W przerwaniu nie wysyła się znaków, bo trzeba na to czekać. Wydaje mi się, że bez przerwania...
float x = 2.6543210; String tekst = FloatToStrF(x, ffNumber, 7, 2); Label1->Caption = "Wynik = " + tekst; Przy okazji, Refresh jest bezużyteczny chyba, że dalej w kodzie masz zdarzenie OnPaint.
w ostateczności mógłbym customizować jakiegoś printf'a żeby w integery wstrzeliwał mi przecinek Nie ma co "customizować", wystarczy odpowiednio wyświetlić. Przykładowo jakbyś chciał 2 miejsca po przecinku: [syntax=c]float floatValue = ...; unsigned int value = floatValue * 100f; printf("%u.%02u", value / 100, value % 100);[/syntax] Ze scanf() da się...
Nie "float main" a "int main" Nie <iostream.h> tylko <iostream> I wtedy - albo: using namespace std; i cout << (costam) albo: bez using namespace i piszemy std::cout W pętli for nie przecinki a średniki. Pierwiastki źle liczysz - pow to potęga. sqrt - pierwiastek kwadratowy, cbrt - sześcienny. #include <iostream> #include <math.h>...
pierwszy znak jaki dostajesz z UARTa to '$', poniewaz nie ma warunku na ten konkretny znak to wywoluje sie warunek default. poniewaz jest to pierwszy znak to wskaznik ma wartosc 0. zapisujesz ten znak pod adres zero. operacja ta konczy sie natychmiastowym krytycznym wyjatkiem jadra, poniewaz zapis flasha (adres 0) przez kod programu nie jest mozliwy....
Nie musi być typu float. Wystarczy, że a będzie przechowywać wartość pomnożoną przez 10, a przy wyświetlaniu wstawisz przecinek pomiędzy odpowiednie cyfry.
Nie mam pomysłu jaki wzór zastosować by obliczyć temperaturę z tego czujnika, czujnik połączony w układzie dzielnika napięcia (nie potrzebna dokładność) Dla twojego zastosowania nie potrzebujesz nic obliczać, ani też znać/stosować żadnego wzoru na oblicznie temperatury(!) Jeżeli potrafisz zmierzyć rezystancję tego czujnika RTD (PT1000) w ogóle i interesują...
Tak, float jest mi bardzo potrzebny, bo program liczy log10(a) dla a w zakresie 1 - 10000 z dokładnością trzech cyfr po przecinku - żeby dostać tylko liczby całkowite, mnożę ten wynik przez 1000, ale chcę żeby wynik zaokrąglił się odpowiednio do pozostałej po przecinku części.
Poza tym warto się zastanowić czy konieczne jest korzystanie z typów float do tak prostych celów??? Przecież w 100% można się obejść bez nich robiąc proste działania na liczbach całkowitych. W zależności od tego ile masz miejsc po przecinku w temperaturze to przez tyle pomnożyć liczby składowe w tym działaniu. Np jeśli będą dwa miejsca po przecinku...
Szymtro: 256 to on ma ale bajtow a nie kilobajtow. Probowalem juz roznych opcji z data, idata nawet zmienialem rozmiar stosu SP na cos z gory SFR 0xA0 pozbylem sie problemu stack size exceeded ale pamieci ciagle za malo. Wydaje mi sie ze to przez operacje na zmiennym przecinku, obsluga float mysle na tym procku jest mocno pamieciozerna, a do tego jeszcze...
Float jest tym hexem 4-bajtowym przez cały czas, tak jest zapisywana i odczytywana w pamięci uC, to tylko Ty widzisz jej wydruk na UART czy ekran w formie przetworzonej do tekstu jako liczby dziesiętnej z dwoma miejscami po przecinku, bo taka jest pewnie domyślna konfiguracja funkcji do drukowania float w wybranym programie, podczas zamiany na tekst,...
tak, jest ustawiony na "CONTINUOUS_HIGH_RES_MODE_2", też babola zrobiłem bo przypisywałem na int. Zmieniłem na float, jest ok, 2 miejsca po przecinku, ale to cały czas bardzo mała tolerancja w zakresie dolnej granicy pomiaru. Zastanawiam się czy nie przejść na analog i jakiś lepszy fotorezystor.... Dodano po 9 dziękuję (at)rb401 ! nurkuję czytać w...
a nie mówiłem...drugi zajmie jeszcze więcej :) Drugi pomysł używałem na Atmega16, lecz nie wywoływałem fprintf_P(); tylko kilka razy. Jeśli wiesz jak będzie wyglądał wynik tzn ile będzie miał miejsc po przecinku i w sumie ile cyfr to zawsze możesz użyć pomysłu kolegi: elektronik12z Możesz też bawić się w dzielenie, mnożenie, odejmowanie i modulo (czyli...
Uzyj funkcji sprintf.
Jeśli chodzi o sprintf to jak można sformatować tekst wyświetlany aby zawsze były wyświetlane dwie cyfry po przecinku nawet jeśli równają się zero np. 12.00?
Jeśli średnia ma być z liczb naturalnych, to bez sensu jest wczytywać je jako float. Tylko wynik dzielenia trzeba zrobić jako float: printf ("Średnia:%.6f\n", (float) wynik/licznik); Żeby wczytać dowolną ilość liczb, for-a trzeba przerobić na nieskończonego: for (;;) a do scanfa dorobić coś takiego: if (scanf(...)...
Czy dolinkowałeś do projektu odpowiednie biblioteki? Poczytaj sobie opis funkcji vfprintf() w dokumentacji avr-lib (w stdio.h). Standardowo dla oszczędności miejsca w pamięci dolinkowywana jest uproszczona wersja biblioteki bez obsługi float. Pewnie to ci psuje zabawę. :) A dlaczego porzuciłeś dtostrf()? Dawno już nie robiłem konwersji z floatów, ale...
Jeżeli nie potrzebuję wyniku po przecinku tylko wartość całkowitą to mogę zamiast float dać int temperature a kompilator sam ze wzoru zwróci część całkowitą i pominie ułamek.
Witam. Mam podobny problem. Posiadam zmienną int na której wykonuję operacje. np wartość zmiennej int będzie od 5000 do 1. Problem polega na tym że na wyświetlaczu muszę mieć reprezentację po przecinku. np: 5000 na 500,0 356 na 35,6 12 na 1,2 4 na 0,4 Nie chcę wykonywać, żadnych operacji na zmiennych typu float , żeby nie obciążać procesora zwłaszcza...
Jeśli chodzi o losowanie to już ogarnąłem ale jak przy pomocy [syntax=csharp]Random randomVal = new Random(); float = randomVal.Next(10);[/syntax] generować liczby z przecinkiem?
można zobaczyć co to jest to M_PI? Jakby się zrobiła doublem (np w wyrażeniu) to by potrzebowała format %lf A po drugie z tytułu optymalizacji często są po dwie biblioteki z printfem: ze zmiennym przecinkiem i bez.
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)...
Witam, dzięki panowie za podpowiedzi. Ja kombinowałem z podzieleniem odczytu. Do odczytu dodawałem 130, wynik dodawałem do stringa , z tego "wyciągałem"(string.substring();) dwa stringi , czyli na wartość przed przecinkiem i po . A po stronie odbiornika łączyłem i konwertowałem ponownie do float. Dlatego było moje pytanie o jakiś prostszy sposób.
Może trochę nie rozumiem, ale jeśli chcę ograniczyć ilość cyfr znaczących i ilość cyfr za przecinkiem to wpisuję taki np. kod : aaa:=bbb/ccc; Eaaa.Text:=floattostrf(aaa,fffixed,5,3); 5 - ilość cyfr znaczących, 3 - max. ilość cyfr za przecinkiem
Chciałem się dowiedzieć jak wysłać zmienną typu float na wyświetlacz LCD, dodam że najmniejsza liczba jaką chcę wysłać ma pierwszą cyfrę na 7. miejscu po przecinku, a najwyższa ma 2 cyfry przed przecinkiem. Czy jest jakiś godny polecenia sposób, który pozwoliłby to zrobić na Atmedze8?
A moze by tak ? ;) liczba2=((float)liczba1/100);
Piotruś wiesz co robi pies jak nie ma co robić? Nie pisz mi co będzie dla mnie, albo kogoś lepsze. W przeciwieństwie do Ciebie pamiętam na czym skończyła się rozmowa. Pisałem z autorem o tym by pozbyć się Single co dla Twojego rozumku widzącego tylko C przekłada się na "float" Tak więc pokazałem jak pozbyć sie floatów przesuwając przecinek. Kod się...
int -> char[] - itoa() float -> char[] - tutaj funkcji jest wiele, zależnie od potrzeb - najlepiej poprzeglądać dokumentację do libc (zwykle newlib) - dołączoną do kompilatora. Implementację funkcji itoa() można znaleźć na mojej stronie www.freddiechopin.info -> Download -> ARM -> Różne Na podstawie funkcji itoa() można zresztą wymyślić własną funkcję...
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...
scanf("%d",&a); scanf("%d",&b); %d do całkowiktych, %f do zmiennoprzecinkowych. Dalej już musisz dodać ten drugi kod który próbowałeś wcześniej czyli z rzutowaniem na typ float. Jeżeli chcesz tylko 2 miejsca po przecinku to zmień formatowanie na %.2f
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)....
tak jak mgjk mowi zmien x na float oraz dawaj . po liczbie np 100.0 powinno pomoc
Witam, Zobacz w Panelu Sterowania ->Liczba->Symbol dziesiętny co tam jest kropka czy przecinek. Zobacz też w swoim pliku tekstowym z programu jaki tam jest symbol. Powinno być to samo. Jeżeli jest różnica jest to przyczyna Twojego "bólu" czyli przy przenoszeniu danych z pliku do tabeli trzeba zmienić symbol dziesiętny na taki jak ma być (z punktu widzenia...
typ float chyba powinien być.. Te czujniki zapisują dane z przecinkiem ze wzgledu na ich dokladnosć do 0,1 albo 0,5 st c.
Już są: sig_out_my(i) = round(sig_out_my(i) / 10000); to nie działa. Jak rozwiązać ten problem na avr? Jaką dokładność ma float? Ile miejsc po przecinku? i jaką maksymalną wartość ? :)
Pytanie było o C++ a nie ansi C to po pierwsze. Po drugie nie uzyskasz takim dzieleniem żadnej liczby z przecinkiem bo wynik jest typu int i kompilator zrzutuje wynik dziąłania w górę na int. Widzę, że zrozumienie działania kodu trochę przerosło przedmówcę. Ale niech będzie, to samo w C++: int dzielna, dzielnik; int wynik_skalowany; wynik_skalowany...
Przynajmniej u mnie obecność econet czy panelu pokojowego ecoster nie ma znaczenia co do tego jakie parametry wystawia. Przy podłączeniu ecoster touch jedynie do ramek dochodzi informacja o tym jaką wersję SW posiada ten panel i nazwa panelu (domyślna lub własna o ile została ustalona). Ecomax wysyła 3 rodzaje ramek i własnie w tej drugiej (ostatnia...
To nie ma nic do windowsa, działasz totalnie na oślep. Tak się nie rozwiniesz jako programista. I nie naprawia się błędów przez reinstalacja, ale przez precyzyjną analizę. Na małych architekturach zmienny przecinek nie jest przyłączany by default, a na życzenie. Problem tkwi w twoim projekcie. To mogą być paradoksalne złączenia okoliczności, jak sprintf...
Ten opis chyba nie jest dobry. Google wyrzuca Twój wątek na wss.pl, z przykładem kodu autorstwa djroman ale to chyba też nie do końca poprawnie. Szczególnie to D-miejsce kropki dziesiętnej/miejsce+ostatnia cyfra z wartością 0F mi nie pasuje. Czy dysponujesz opisem formatu używanego przez wagę? Jeżeli nie masz dokumentacji formatu zbierz więcej próbek...
Witam generalnie mam jakis problem z liczbami typu float np float liczba; liczba=(p_gora_1/100)*(1024/... gdzie p_gora_1=4600 wynik powinienem otrzymac 942,08 a otrzymuje 920 dla czego? kolejny problem to, jak wyswietlic liczbe typu flaot na LCD float yy=3.4; lcd_puts("Ilosc modulow: "); utoa(yy,buf,10);...
Działać trzeba na liczbach całkowitych typu uint, które są podstawowym rodzajem zmiennych we wszystkich sterownikach. Pilnujemy żeby działania zawsze mieściły się na szesnastu bitach, czyli w zakresie 0-65535. 50 [min] * 100 [%] / 50 [%] = 50 [min] * 100 [%] / 30 [%] = 50 [min] * 100 [%] / 20 [%] = Pierwszą i trzecią wartość z równań można wyrzucić...
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]...
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...
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...
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.
dzielenie przecinek wyświetlać przecinek ds18b20 przecinek
lodówka elektrozawór dioda selenowa zalany klucz
ekspres naprawa żarówka szeregowo
Części kompatybilne Oleo-Mac GS 370 i 937 Utrata komunikacji z pompą wspomagania TRW w Skodzie - przyczyny i rozwiązania