Arduino Polska Forum
liczby z przecinkiem - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Instalacja i rozwiązywanie problemów (https://forum.arduinopolska.pl/dzial-instalacja-i-rozwi%C4%85zywanie-problem%C3%B3w)
+--- Wątek: liczby z przecinkiem (/watek-liczby-z-przecinkiem)

Strony: 1 2 3 4


liczby z przecinkiem - zojsan - 08-02-2020

Witam wszystkich
Mam taki problem
wycinek kodu....;

float ml;
float mlx;

mlx=(50/60);
ml=(ml + mlx);
Serial.println(ml);

Mimo tego że jest zadeklarowana zmienna double zwraca mi 0
jak podstawię
mlx=(60/60);
zwraca 1 a jak
mlx=(100/60);
to też jeden
Czemu nie liczy dziesiętnych czy setnych części po przecinku...
Proszę o pomoc...


RE: liczby z przecinkiem - Smaczek - 08-02-2020

Witam,
Powinno być 50.0 / 60.0
Pozdrawiam


RE: liczby z przecinkiem - zojsan - 08-02-2020

dzięki wielkie...
no tak... Rolleyes


RE: liczby z przecinkiem - zojsan - 12-02-2020

Kurczę... mam następny schodek
Wynik "ml" jest prawidłowy i wyświetla go poprawnie ale nie mogę użyć tej informacji w dalszym kodzie
Kompilator nie bierze tej zmiennej pod uwagę
np
if(ml==500.0 && x=1);
{Blynk.notify("500 ml");}


RE: liczby z przecinkiem - MERASerwis - 12-02-2020

Liczb zmiennoprzecinkowych nie porównuje się przez "==" bo wiele wartosci nie istnieje, np nie ma 0.7 jest tylko przybliżenie np 0.6999999 albo 0.7000001.
Jakiego arduino używasz? Na avr nie ma typu double i działają wolno.
Dlaczego musi być typ zmiennoprzecinkowy?


RE: liczby z przecinkiem - zojsan - 12-02-2020

Mam nodemcu
Mam pompę którą zmieniam wydajność od 0 do 100ml/min
Chciałbym żeby niezależnie jaka jest wydajność policzyło mi ilość przepompowanej cieczy
mlx=wydajność/60 sekund
I w pętli co sekundę 
ml=ml+mlx


RE: liczby z przecinkiem - elvis - 12-02-2020

Masz aż dwa błędy w jednej linii:

if(ml==500.0 && x=1);

Po pierwsze x=1, a powinno być x==1, po drugie średnik na końcu - więc nawet jeśli warunek jest spełniony to nic się nie dzieje, a blok instrukcji po if jest wykonywany.


RE: liczby z przecinkiem - MERASerwis - 12-02-2020

(12-02-2020, 12:32)zojsan napisał(a): Mam nodemcu
Mam pompę którą zmieniam wydajność od 0 do 100ml/min
Chciałbym żeby niezależnie jaka jest wydajność policzyło mi ilość przepompowanej cieczy
mlx=wydajność/60 sekund
I w pętli co sekundę 
ml=ml+mlx
Nie wystarczy rozdzielczość jaką oferuje arytmetyka stałoprzecinkowa?


RE: liczby z przecinkiem - zojsan - 12-02-2020

(12-02-2020, 12:39)to był średnik....  Dzięki Elvis


MERASerwis napisał(a):
Nie wystarczy rozdzielczość jaką oferuje arytmetyka stałoprzecinkowa?
nie rozumiem...


RE: liczby z przecinkiem - MERASerwis - 12-02-2020

(12-02-2020, 13:03)zojsan napisał(a):
(12-02-2020, 12:39)to był średnik....  Dzięki Elvis MERASerwis napisał(a): Nie wystarczy rozdzielczość jaką oferuje arytmetyka stałoprzecinkowa?
nie rozumiem...
Jakiego zakresu liczb potrzebujesz? Musi być aż:
2,2E-308 ÷ 1,8E+308 (dokładność 15 cyfr) ?
Nie wystarczy 0 ÷ 4294967295 ?