Liczba postów: 14
Liczba wątków: 1
Dołączył: Jan 2020
Reputacja:
0
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...
Liczba postów: 250
Liczba wątków: 0
Dołączył: Dec 2016
Reputacja:
48
Witam,
Powinno być 50.0 / 60.0
Pozdrawiam
Liczba postów: 14
Liczba wątków: 1
Dołączył: Jan 2020
Reputacja:
0
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");}
Liczba postów: 79
Liczba wątków: 0
Dołączył: Feb 2020
Reputacja:
1
12-02-2020, 11:50
(Ten post był ostatnio modyfikowany: 12-02-2020, 11:53 przez MERASerwis.)
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?
Liczba postów: 14
Liczba wątków: 1
Dołączył: Jan 2020
Reputacja:
0
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
Liczba postów: 204
Liczba wątków: 2
Dołączył: Sep 2019
Reputacja:
13
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.