float i=1/100; dla czego wynik 0,a nie 0.01?????

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
nasiono
-
Posty: 46
Rejestracja: 29 lip 2005, 0:01

float i=1/100; dla czego wynik 0,a nie 0.01?????

Post autor: nasiono » 05 sty 2006, 13:18

Jak w temacje .Nie rozumiem dlaczego tak sie nie da może mnie ktoś oświecić.?

procek to amtega 16 i WinAVR, język C;

ksmigrod
-
Posty: 1
Rejestracja: 05 sty 2006, 14:34

Post autor: ksmigrod » 05 sty 2006, 14:38

Kłaniają się podstawy języka C, a konkretnie konwersje typów

int / int daje int
aby rozwiązać problem jedna z poniższych wersji:
float i = (float) 1 / 100;
float i = 1 / (float) 100;
float i = (float) 1 / (float) 100;

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 05 sty 2006, 15:14

albo jeszcze bardziej elegencko:

Kod: Zaznacz cały

i = 1.0f/100.0f;

nasiono
-
Posty: 46
Rejestracja: 29 lip 2005, 0:01

Post autor: nasiono » 05 sty 2006, 16:33

Wielkie dzięki. Nie miałem o tym nawet pojęcia, teraz wszystko jest jasne

ODPOWIEDZ