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
Witam. Próbuje od jakiegoś czasu pojąć dlaczego dzielenie dwóch liczb zwraca mi zero, jak w kalkulatorze zwraca mi to 0,20~ float test = 2518/12512; sprintf_s(buf, "%f", test); Gdzie wynikiem jest 0.0000 Masz dzielenie stałoprzecinkowe, bo argumenty są całkowite. [syntax=c]float test = 2518.0/12512.0; [/syntax]
Siemka! Musisz wziąść pod uwagę fakt, iż zmienna single przechowuje wartości zmiennoprzecinkowe ze skończoną dokładnością i to może być zauważalne przy niektórych operacjach na tego typu zmiennych. Poszukaj w helpie od Bascoma i poczytaj o kodowaniu liczb zmiennoprzecinkowych i wszystko Ci się wyjaśni:) Pozdrawiam!! Widzę że dałeś kod.:) Mi się wydaje...
Nie wiem czy to będzie istotne, ale w języku C/C++ istotnym na pewno jest przy jakimkolwiek dzieleniu stosować zapis , dla przykładu : [syntax=c]dodaj=modul_depth/8192.0[/synt... Wtedy kompilator wie że to co dzieli dzieli w sposób dedykowany liczbom zmiennoprzecinkowym, w innym przypadku jako wynik wyjdzie tylko część całkowita. Ale to też zależy od...
A tak z ciekawości to pokaż cały kod. W czym kompilujesz ? Przy okazji użyć syntaxu C++ będzie czytelniej. Kolega Sedr sugeruje, że wprowadzasz dane w nieprawidłowy sposób, to częsty błąd. Czy po wprowadzeniu z kropką zamiast przecinka nadal są jakieś problemy ?
... Może ktoś wie jak to zrobić bez sztucznego sprawdzania i dopisywania końcówek. PL Ja chyba wiem ;) 'dla Frm = 0 , kompiluje Fusing() 'dla Frm = 1 , kompiluje Format() 'teraz mozna porównać "pamięciożerność" Const Frm = 0 Dim A As Single , B As Integer , C As String * 10 A = 1.1625 B = A * 10 #if Frm C = Str(b)...
Nie programowałem Fateka, ale nie chce mi się wierzyć, że nie ma on liczb zmiennoprzecinkowych. A może jest coś na zasadzie Stepa7, gdzie do poszczególnego typu masz przeznaczone oddzielne bloki DIV_I, DIV_R. Poczekajmy może jakiś fachmen od Fateka się wypowie.
Tutaj znajdziesz sporo na ten temat: http://pl.wikipedia.org/wiki/Liczby_zmie... Pozdrawiam
Witam, Z Mitsubishi nie mam doświadczenia, ale znalazłem coś, co powinno Panu pomóc: http://www.dcc.ttu.ee/lap/lap5760/jy992d... http://www.automationsystemsandcontrols.... Pozdrawiam serdecznie.
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:...
Hey. Zrob tak: Pierwszy sposób: #include <stdlib.h> .... float Wynik = 1.123; .... dtostrf(tmp,6,3,pomiar); //zamiana float na string wypiszNaLCD(pomiar); // twoja funkcja wypisująca ciąg znaków Drugi sposób (użycie printf-a): W pliku Makefile dodajesz: # If this is left blank, then it will use the Standard printf version. #PRINTF_LIB...
Przepraszam za zamieszanie :( Znalazłem przytępny dokument na ten temat - http://goku666.webpark.pl/lekcja17.htm Może się przyda - mi pozwolił usunąc trochę braków w edukacji :)
Prosto i jasno napisane, pytanie bardziej do działu Programowanie Początkujący. 14,5 zapiszemy jako: mantysa * 2^wykładnik (nadmiar 127) 1) liczba jest dodatnia - pierwszy bit (znak) = 0 2) szukamy wykładnika (2^w), sprawdzając kolejne w w = 1 -> 2^w = 2 -> niedomiar w = 2 -> 2^w = 4 -> niedomiar w = 3 -> 2^w = 8 -> niedomiar w = 4...
Co do drugiego przykładu - jak przekazujesz do 'bc' kilka wyrażeń, to rozdzielaj je średnikami, nie spacjami. echo -n $(echo "scale=2; 1/2; 1/4; 1/5" | bc) - wypisuje ".50 .25 .20" bez przejścia do nowej linii (dzięki -n). Albo wypróbuj: echo "<<< $(echo $(echo "scale=2; 1/2; 1/4; 1/5" | bc)) >>>"
Ja bym powiedział, że potrzebujesz zmienić program na nieużywający liczb zmiennoprzecinkowych... a już dzielenia na tych liczbach w ogóle:>
Witaj, Z materiałów, które zostały mi z zajęć na studiach: "Inną metodą konwersji Qm na liczbę dziesiętną jest przedstawienie liczby binarnej w postaci liczby całkowitej ze znakiem i podzielenie jej przez 2^m. np. w notacji Q7 0 100 1001 = 73(10) / 2^7 = 0,5703125 w odwrotnym przypadku mnożymy liczbę którą chcemy przekonwertowań na standard Qm przez...
Konwersję można przeprowadzić na wiele sposobów. podaję przykład dla liczb wprowadzonych z klawiatury. #include <conio.h> #include <iostream> using namespace std; main() { char liczba_ch[10],liczba_kr[10... cout<<"podaj liczbe ";cin>>liczba_ch; int dl=strlen(liczba_ch); for(int...
jak najprościej wykonać obliczenie zmiennoprzecinkowe (z dzieleniem) na liczbach uint8_t, tak aby wynikiem także była liczba uint8_t? Wcale nie musisz wykonywać dzielenia na zmiennoprzecinkowych :wink: wystarczy że zrobisz np: tak: uint8_t a; uint16_t b; b=(20*10)/3; b*=10; a = b/10; Zasada jest taka żeby "przesunąć" przecinek z ilorazu w prawo...
Może zobacz ten link: http://mr-k.namyslow.eu.org/studia/arytm... Może się przyda. Pozdrawiam.
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;...
w zanadrzu to tylko coś takiego na 8086, ale nie potwierdzę poprawności działania...
Może coś z tego: [url=https://support.industry.siemens.co... can you process 64-bit floating-point numbers in STEP 7 (TIA Portal) with a SIMATIC S7-300/400 CPU? [url=https://support.industry.siemens.co...
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...
To dlatego, że liczby reprezentowane są na skończonej liczbie bitów i w końcu "rozbijamy" się o te pojedyncze bity. Typ "float" to 32 bity zmiennoprzecinkowe, zmień na "double" a się poprawi. Radzę poszerzyć swoją wiedzę na temat typów zmiennoprzecinkowych a wszystko stanie się jasne.
Witam! Oczywiście to trochę zgadywanie, ale w większości znanych mi sterowników w ten sposób oznacza się blok, który wykonuje mnożenie dwóch liczb w formacie zmiennoprzecinkowym (real). Stad skrót MUL(tiplication)-R(eal). Wynikiem mnożenia jest oczywiście również liczba zmiennoprzecinkowa.
Poszukuję uC z komplementarnymi PWM + obliczenia zmiennoprzecinkowe o podwójnej precyzji. Idealny by był: STM32H745ZI. Znalazłem STM32G431KB. Trochę duży rozrzut masz. Obudowa PQFP144, a obudowa TQFP32, to zupełnie różne światy. Jeżeli ten pierwszy jest idealny, to ten drugi nie ma szans go zastąpić. Ale... Ten drugi pochodzi z rodziny zaprojektowanej...
zapewne to wina wewnętrznego kwarcu i liczenia zmiennoprzecinkowego. A propos ta obsługa przerwania jest zdecydowanie za długa. I zmiennoprzecinkowe po co? PS. taką metodą RTC nie wyjdzie najlepszej jakości. Timer 2 asynchronicznie z kwarcem 32,786.
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. :)
Bazując na konstrukcji standardu zapisu liczb zmiennoprzecinkowych IEEE-754, zaproponuj własny standard zapisu takich liczb o łącznej długości M=(2+N)*8 bitów, gdzie N jest numerem dnia tygodnia, w którym się urodziłaś/-eś (np. środa -> N=3, M=40 bitów). Określ długości i przeznaczenie poszczególnych pól bitowych a następnie podaj binarne zapisy dla...
Zamiast: printf("%f",zmienna); Proponowałbym funkcje dtostre() i dtostrf() . Zajmują dużo mniej miejsca niż zmiennoprzecinkowa wersja printf() . Zresztą w znakomitej większości aplikacji da się całkowicie uniknąć printf(). Czy tą linijkę tylko dodałeś, czy usunąłeś też linię linkującą z biblioteką pozbawioną obsługi liczb zmiennoprzecinkowych?
Witam. A czy nie bardziej oszczędna była by funkcja dtostrf. Obsługuje ona liczby zmiennoprzecinkowe.
A może byś zmienił typ zmiennej z int na double, czyli z typu liczb całkowitych na zmiennoprzecinkowe.
AVR nie ma operacji na liczbach zmiennoprzecinkowych (float). kompilator musi je jakoś emulować. jeśli nie jest to absolutnie konieczne nie stosuj zmiennych float.
1. Tak to nam skonweruje liczbę zmiennoprzecinkową na stałoprzecinkową eg: 2.2->2. 2.Jest też dobre.
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,...
To może koledzy mają jakiś inny sposób na zamianę liczby z postaci zmiennoprzecinkowej w całkowitą? No to w końcu chcesz mieć liczbę całkowitą w zmiennej zmiennoprzecinkowej czy liczbę całkowitą w zmiennej całkowitej? Jak to drugie, no to Round: Dim Co2_w As Single Dim Co2_int As Long ... Co2_int = Round(co2_w) Niezgodnie z Helpem BASCOMa,...
Pisząc w C, unikając liczb zmiennoprzecinkowych, zakładając programową obsługę 1-wire, sprzętową PWM, oraz bluetooth (UART) powinno się spokojnie zmieścić. Pozdrawiam
W zależności od tego, czy chcesz wykonać obliczenia na liczbach zmiennoprzecinkowych, czy stałoprzecinkowych możesz użyć jednego z dwóch rozwiązań: Wynik dzialania to 22.9688. Wynik dzialania to 22,9687. Przy okazji: algorytm całkowitoliczbowy nie liczy poprawnie dla wyników ujemnych.
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
Powinien ale cls daj przed petla a w niej zastosuj locate. Po za tym nie operuj warunkami na liczbach zmiennoprzecinkowych. Przelicz sobie jaka wartosc ma zmienna Wart_ac przy napieciu 1V i do niej napisz warunek.
Generalnie jeśli zależy Ci na równomiernym rozkładzie, to oczywiście można to osiągnąć, jednak z wykorzystaniem jednostki zmiennoprzecinkowej, co niestety negatywnie wpłynie na wydajność (sam coś takiego robiłem kiedyś ;) ) Po prostu dzielisz cała długość przez ilość elementów i inkrementujesz liczbę zmiennoprzecinkową wykorzystując do indeksowania...
Źle definiujesz typ zmiennych. Żeby można wykonywać operacje zmiennoprzecinkowe, typ zmiennych powinien być single lub double. Dim Dawka_temp As Single, Dawka As Single
Jeżeli masz zmiennoprzecinkowe to może tak: [syntax=javascript]a = parseFloat(document.form.a.value);[/synt... lub tak: [syntax=javascript]suma = a+'+'+b+'='+ (parseFloat(a)+parseFloat(b));[/syntax]
Wydaje mi się, że potrzebujesz dolinkować obsługę liczb zmiennoprzecinkowych w gcc/avr-libc. Niestety nie pamiętam teraz dokładnie jak to zrobić, a chwilowo nie mam na komputerze środowiska do sprawdzenia tego..
temat wałkowany już kilka krotnie. funkcje delay mają argument typu float jeśli podajesz zmienna jako argument do dodajesz również operacje zmiennoprzecinkowe na tej funkcji które .... dają efekt jaki uzyskałeś
Zamiast od razu równania daj zmienną: doube a=twoje równanie; cout<<a; Stosuj zmienne zmiennoprzecinkowe a nie całkowite. Oczywiście czasem można obejść problem mnożąc liczby zawczasu przez 1,0 ale po co?
Chyba nie czytałeś ostatnio tego rozdziału z Language Fundamentals. W ten sposób sam sobie robisz kuku... Pomijając to myślę, że jeśli te Twoje zmiennoprzecinkowe masz tylko do dwóch miejsc po przecinku, to dlaczego, po prostu, nie pomnożysz tego x100 a na końcu wyniku nie podzielisz /100? Zapewne wszystko się wykona dużo szybciej niż na tych zmiennoprzecinkowych....
Witam, Jeśli nie musisz nie korzystaj ze zmiennych typu single, lepiej przeskalować int'a kilka razy (np zamiast 1,232 robisz 1232 a przy wyświetlaniu dodajesz przecinek) operacje na liczbach zmiennoprzecinkowych zjadają spora flash i czasu procesora. Pozdrawiam, Marcin
1. Napisz program od nowa bez wywołań rekurencyjnych 2. Napisz program od nowa bez wykorzystania liczb zmiennoprzecinkowych 3. Napisz program od nowa bez wykorzystania funkcji sprintf 4. Co to jest LCD_CLEAR? Makro czy funkcja? Jeśli funkcja to czegoś brakuje przy jej wywołaniach.
Bash nie umie robić obliczeń zmiennoprzecinkowych. Potrzeba do tego np. `bc` [syntax=bash] LICZBA=`tail -c 6 ./text.txt` echo $LICZBA WYNIK=`echo "100-$LICZBA" | bc` echo $WYNIK [/syntax] Separatorem ułamka dla bc musi być kropka a nie przecinek.
Funkcja ta sprawdza wartości zmiennoprzecinkowe. Liczby zmiennoprzecinkowe zgodnie ze standardem IEE reprezentowane są w formie mantysa + cecha, sposób ten ma określone ograniczenia i zasady na prezentowanie określonych liczb. Funkcja o którą pytasz służy do sprawdzenia "w jakim zakresie" jest dana liczba i zwraca odpowiednie wartości: 0 Liczba w zakresie...
Używam wersji 20060421, o nowszej nawet nie słyszałem. może to problem z jakimiś funkcjami zmiennoprzecinkowymi. Czytałem gdzieś, ze w Makefile są opcje kompilacji z tym związane, ale niestety nie bardzo się w nich łapię. Hm.. A linkujesz bibliotekę libm? (-lm w opcjach linkera.. Nie doszukałem się tego w tym co wcześniej wkleiłeś..) Ogólnie używasz...
(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)
Witam, Czy chodzi Ci o coś takiego jak w załączniku? Makro napisane na szybko, "na kolanie", z bezczelnie zagnieżdżonymi 5 pętlami FOR (gdzie aż się prosi aby użyć jakiejś rekurencji...), dodatkowo operacje wykonywane na liczbach całkowitych, żeby uniknąć problemów z sumowaniem i porównywaniem liczb zmiennoprzecinkowych (czyli 1 = 0.1, 2 = 0.2 etc).
A sprawdź jaki będzie wynik odejmowania tych dwóch prawie równych liczb, jeśli nie zero, to w takim razie to jest problem "standardowy" z liczbami zmiennoprzecinkowymi polegający na niejednoznaczności liczby i nieciągłości zbioru. Tak na szybko znalazłem taki tekst http://www.cygnus-software.com/papers/co...
Nie musisz stosować dodatkowych zmiennych pomocniczych Twój przykład: "a = b * (c + d)^2" musisz rozpisać a= c+d a= a*a a= a*b Pamiętaj jednak , że procesory ośmiobitowe nie zostały stworzone do obliczeń matematycznych i staraj się unikać działań na liczbach zmiennoprzecinkowych
Zamień: x: integer; x1: integer; x2: integer; na: x:real; x1:real; x2:real; z tego co pamiętam to typ zmiennoprzecinkowy w pascalu to real pzdr.
coś pozytywnego bo nie wywaliło błędu i zamiast temp. wyświetliło ? Czyli brak bibliotek kwyświetlających float. Jak dodać w AVR studio wiem, w Arduino nie, trzeba więc poczytać jak to zrobic. Można też użyć funkcji w stylu itoa dla zmiennoprzecinkowych (nazwa wyleciał mik z głowy, bo uzywam sprint, jest wygodniejszy).
do opcji linkera nalezy dodac -lm (myslnik el em) - dolaczy to do linkowania biblioteke libm.a, ktora zawiera definicje funkcji zmiennoprzecinkowych matematycznych z naglowka math.h niemniej jednak nie wiem czemu dolaczasz wprost biblioteki libc i libgcc - zapewne przez to masz problem (też) - usun je z makefile. 4\/3!!
To napisz Panel1.Caption:= FloatToStr(Pi*r*r); Po prostu zgubiłeś funkcję dokonującą zamiany liczby na tekst. Pamiętaj, że wynik zwracany przez funkcję Pi (lub stała Pi) jest typu zmiennoprzecinkowego.
Najpierw poczytaj co to są liczby stałoprzecinkowe i zmiennoprzecinkowe. Takie dzielenie jak tu zostało zaprezentowane jest na liczbach stałoprzecinkowych. W takim przypadku to ty decydujesz gdzie będzie przecinek i czy w ogóle będzie. Po za tym powtórzę się za kol koodpl : po co takie rzeczy rzeźbić w asm?
Czyli co mam zrobić? Przemapuj ograniczony zakres ruchu i traktuj to jako pełny(!) W Arduino isnieje do tego funkcja 'map'. e marcus Fizycznie działa to identycznie, jak opisałem. Chociaż prawdopodobnie wewnętrznie funkcja ta nie wykorzystuje obliczeń zmiennoprzecinkowych. Tutaj jest to opisane: [url=https://www.arduino.cc/reference/en...
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...
Witam. Przeglądnij procedury na stronie: http://www.8052.com/codelib.phtml Może znajdziesz coś podobnego. Pozdrawiam.
Tylko własnie muszę to napisać pod ISE Xilinx w VHDL na zaliczenie kursu ;/
Witam! Jeśli definiowana funkcja nie jest poprzedzona typem, wówczas kompilator przyjmuje, że zwraca wartość typu int. Ponadto w funkcji main, funkcja obliczanie_temp jest wywoływana przed jej definicją, a nie po. W tym przypadku musi w funkcji main lub przed nią wystąpić deklaracja potwierdzająca (prototyp). Kolejne niedopatrzenie - zmienna celsius...
x/y jest obliczane na liczbach typu integer, a wynik "obcinany", stąd Twoje problemy. Spróbuj tak: int n = (x*256+255)/y; Nie jest to dokładnie to samo ;) ale za to nie używasz liczb zmiennoprzecinkowych. Alternatywnie przed dzieleniem konwertuj x na float. Pozdrawiam, Dr.Vee
Zadeklarowałeś int a, b; a wczytujesz do nich wartości zmiennoprzecinkowe. Może warto jednak być mniej upartym i zadeklarować w ten sposób? float a, b; :)
Niestety, jest to znany i występujący od dawna problem wynikający ze sposobu przeprowadzania przez excel obliczeń na liczbach zmiennoprzecinkowych. [url=https://answers.microsoft.com/en-us... do wyjaśnienia z answers.microsoft.com Trzeba używać zaokrągleń...
Ja do tej pory męczyłem się tylko z pierwiastkiem całkowitym z liczby całkowitej (nie potrzebowałem zmiennoprzecinkowej precyzji) i dobrze w tym zastosowaniu sprawuje się algorytm przedstawiony w poniższym artykule: http://lib.tkk.fi/Diss/2005/isbn95122752...
(p Nigdy, przenigdy nie porównuje się w ten sposób liczb zmiennoprzecinkowych. Przyjmujesz jakąś dokładność obliczeń epsilon np. 0,000001 i porównujesz różnicę dwóch liczb z epsilon (dokładniej wartość bezwzględną z różnicy) [syntax=c]if( fabs(p[i].Przyjazd - czas_symulacji) < epsilon)[/syntax]
W zasadzie wszystko opanowałem ,ale mam problem z takimi działaniami : 1/x gdzie np x=3900 normalni wychodzi 0.0002564 ja potrzebuję wyciągnąć to 2564 tak aby zmieścić się w liczbach przy obliczaniu do 65535. potem rozdzielę sobie 25 i 64 B.
Z czego wynika niespójność zapisu danych w ostatnim arkuszu? W wierszu drugim są te dane zapisane koło siebie, kolumna po kolumnie. W wierszu trzecim między każdą kolumną jest przerwa. Czemu tak jest? Jeśli makro ma sortować wyniki z lotto to można je uprościć, nie musi liczyć do 100 pozycji w wierszu, tylko do sześciu, do tego nie musi liczyć na liczbach...
Witam. Próbuję ogarnąć odczyt wagi i nie wiem co robię źle. W instrukcji komunikacji do wagi mam: "Wszystkie rejestry mają postać 2 bajtową (WORD). Dane zmiennoprzecinkowe (jak masa czy tara) przechowywane są w 2 kolejnych rejestrach i mają postać FLOAT. Jeżeli 1-szy rejestr składa się z 2 bajtów AB a drugi z 2 bajtów CD to FLOAT będzie miał postać...
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
Nie chcę ciągnąć bo to nie temat główny wątku, ale wg mnie nie mamy wpływu (no chyba że się nauczymy na pamięć) na "niedokładności implementacji cyfr zmiennoprzecinkowych" w związku z tym przy zaokrąglaniu za pomocą Round() nadal nie szukał bym konsekwencji. :) Ale już się poddaje, tym bardziej widząc nad awatarem "Moją specjalnością jest upór" :) Również...
Radzę zapoznać się DOKŁADNIE z typami danych , to unikniesz kłopotów , a krew oddaj lepiej w Punkcie Krwiodawstwa ;) param_int = (Bufor[10]-0x30)*(10... // ... unsigned long int /* lub */ param_int = (Bufor[10]-0x30)*(10... // ... (signed) long int Jeśli masz (tu aż 3) różne typy , to MUSISZ...
Witaj Żeby takie obliczenia miały jakąkolwiek sensowną precyzję należałoby prowadzić je w liczbach zmiennoprzecinkowych. Jeżeli zamierzasz pisać to w assemblerze to przydałoby się duuużo kawy i z rok bezpłatnego urlopu. Natomiast do większości kompilatorów C dołączana jest biblioteka "math" w której znaleźć można m.in. funkcję "float sqrt (float x);"...
JacekCz - ja to zrozumiałem, że mają być dwa niezależne pliki binarne, a nie łączone kody do jednego pliku. Choć teraz faktycznie bardziej wygląda to na taką koncepcję, co sporo zmienia. Uporządkujmy (dla szerszej publiczności): pliki źródłowe: pierwszy.c, drugi.asm, może jakiś XML (o różnych rozszerzeniach) który to w platformie programistycznej porządkuje...
Na wszelki wypadek wyciąłeś tak mały fragment z programu, że trudno zgadnąć, co zepsułeś w deklaracjach danych. Używasz typu doble - to jakieś 16 cyfr znaczących. Nie przesadzasz z tą precyzją? Wiesz, ile to kosztuje czasu i pamięci? Myślę, że znacznie łatwiej byłoby trzymać ten współczynnik jako liczbę całkowitą i wyświetlać ją wstawiając kropkę przed...
Tak dla zaokrąglenia, 1 liczba zmiennoprzecinkowa dla temperatury i możemy być liczbą całkowitą, aby wilgotność była bardziej czytelna :) Chcesz, żebym to zrobił?
Pierwszy scanf wczytuje tylko liczbę zmiennoprzecinkową, a pamiętaj, że tam jest również enter. Zostaje on w buforze i trafia do drugiego scanf. Możesz to sprawdzić debugując program lub - co jest bardziej popularne wśród początkujących - zrób wydruk zmiennej ch. Musisz wyczyścić bufor przed wykonaniem drugiego scanf: [syntax=c]fflush(stdin);[/syntax]
Drobne info jeszcze do pow-ka. Jeżeli chcesz go użyć - trzeba przestawić parametry: pow( i, 1.0/3.0) 1.0 i 3.0 daje info dla kompilatorka, że liczny są zmiennoprzecinkowe. Inaczej wynik 1/3 będzie jako 0. Trzeba o tym pamiętać - bo można się łatwo naciąć :). Pozdr.
A sprawdziłeś czy wygenerowany kod nie przekroczył rozmiaru pamięci? Funkcja _delay_us() jest przewidziana dla stałych wartości dzięki temu w trakcie kompilacji preprocesor wykona te wszystkie obliczenia na zmiennych zmiennoprzecinkowych dzieki temu rozmiar takiej funkcji zajmie kilka bajtów. Gdy wstawisz zmienną to kompilatror musi wygenerować kod...
To zależy od środowiska i procesora. Obsługa formatów zmiennoprzecinkowych w printf "kosztuje" sporo, w sensie rozmiaru biblioteki, dlatego wiele środowisk ma ją domyślnie wyłączoną, zwłaszcza, jeżeli sam procesor nie obsługuje sprzętowo zmiennego przecinka.
Witam Mam problem z interpretacją zapytania na Protokole ModBus RTU poniżej ramka zapytanie odpowiedź zapytanie napięcie L1 235.... V Send:01 04 00 00 00 02 71 CB Odpowiedź: (jak to interpretować)_ Recv:01 04 04 43 6B ED CE 53 18 Dane zmiennoprzecinkowe (float). Tu masz konwerter: https://gregstoll.com/~gregstoll/floatto... 43 6B ED CE -> 235.929
Dodatkowo warto przeczytać temat [url=http://www.elektroda.pl/rtvforum/to... WinAVR" - _delay_ms jak i _delay_us nie są przystosowane do tego, aby jako parametr przekazywać zmienną, gdyż wtedy zostanie wkompilowana cała biblioteka liczb zmiennoprzecinkowych. Rozwiązanie: 1/ wstawić stałą 2/ przy _delay_ms można sobie pozwolić...
Tak, za dużo kodu napchałeś. PRINTF_LIB = $(PRINTF_LIB_FLOAT) To Ci nie potrzebne, dtostrf() nie używa tego kodu i powstało właśnie po to, żeby pozbyć się "ociężałego" printf() . Na takim małym procku lepiej printf() i scanf() (i podobnych) nie używać, a już na pewno nie w wariancie zmiennoprzecinkowym.
Nie znam sie za bardzo na C, ale spróbuj zróbić z tej liczby stringa
a nie prosciej zrobic konwersje na czas transmisji i po stronie odbiornika ponownie? zamaist wysylac 12,34 poslij 1234 a odbiornik niech zawsze sobie przesuwa przecinek dzielac prez 10 czy jaka tam jest zamierzona precyzja. Z tego co kojarze (pewny na 100% nie jestem) nie ma bezposredniej mozliwosci wyslania wartosci zmiennoprzecinkowej.
witam, mam problem z liczbami zmiennoprzecinkowymi, posluzylem sie wyszukiwarka i nic nie znalazlem, a zeby nie zakladac nowego tematu pisze tutaj. Chodzi mi o odejmowanie i mnozenie liczb zmiennoprzecinkowych. Dodawac potrafie, ale tych dwoch działan nie potrafie. Nie wiem co po kolei robic i co wogole robic. Moglby ktos mi ładnie opisac wszystkie...
Witam Poszukuje schematow na bramkach logicznych realizujących dodawanie, odejmowanie, mnożenie, dzielenie na liczbach zmiennoprzecinkowych (format obojętny). Z góry dziekuje.
A tu to widzę. Też z podobnym walczę czujnikiem ciśnienia wykrzacza mi cały program na czujnik dht i ciśnenie wyczaiłem że chodzi o liczby całkowite/zmiennoprzecinkowe.
Poczytaj trochę Wiki Bascoma [url=http://wiki.mcselec.com/bavr/FUSING... bo tam zawsze pod każdym tematem pisze "See also" i po nitce doszedłbyś do kłębka [syntax=vbnet]B = Fusing(b , "#.&")[/syntax] Wszystko zależy co jeszcze ma robić ten kod bo do takich zadań to możnaby chyba zrezygnować z Single ;) ..ale jak ma robić tylko to..
Czy procesor staloprzecinkowy jest lepszy od procesora zmienno. ?
Xilinx ISE 9.1
Wszystkie wejściowe rejestry analogowe w sterownikach Horner (%AI) przechowują wartości całkowite, 32-bitowe (INT). Na screenie widać, że interpretujesz zmienną %AI2 jako liczbę typu REAL (zmiennoprzecinkowa, 64-bitowa). Stąd biorą się problemy z wyświetlaną wartością. Zadeklaruj zmienne jako INT i w bloku skalowania wybierz pracę na liczbach INT, a...
Cena nie zmienia się ponieważ dzielenie wykonujesz na liczbach całkowitych, a zatem i wynik wyrażenia w nawiasie tez jest liczbą całkowitą! Chcąc być poprawny pownieneś mnożyć przez 0.01 albo dzielić przez liczbę zmiennoprzecinkową czyli 100.0 void Towar::potrac_opust (int rabat) { Towar::cena-=cena*(rabat/100...
Czy ktos moze mi powiedziec co to jest pamiec kontekstowa??? Wydaje mi się że to jest dodatkowy zestaw rejestrów procesora identyczny z tymi podstawowymi, przy czym można wybrać który z zestawów rejestrów ma być w danej chwili uzywany. Coś takiego się nazywa Hyper Threading u Intela.
Witam, czy może mi ktoś wytłumaczyć jaka jest różnica pomiędzy wykonywaniem operacji na liczbach zmiennoprzecinkowych w przypadku procesora stałoprzecinkowego i zmiennoprzecinkowego gdy piszę program w C? Czy cos takiego jak "skalowanie zmiennych" dostępne jest z poziomu C czy to sprawa asemblera? Wiem tylko tyle ze problemy pojawiają się gdy chcę dodać...
atmega zmiennoprzecinkowy bascom zmiennoprzecinkowy procesor zmiennoprzecinkowy
radiowy sterować 868mhz czcionka chrome lusterka elektrycznie
dremel naprawa honda kierunkowskazy
Czarne cętki na kineskopie przez AV - przyczyny i rozwiązania Symbol "2 w prostokącie" na schemacie lampy EM34