Witam,
mam takie pytanie, dlaczego wynik poniższego kodu to 0.0000000.
#include <stdio.h>
int main()
{
int a=3
int b=100;
float wynik;
wynik=a/c;
printf("Wynik działania to: %f", wynik);
return 0;
}
Co robię nie tak ?
Witam,
mam takie pytanie, dlaczego wynik poniższego kodu to 0.0000000.
#include <stdio.h>
int main()
{
int a=3
int b=100;
float wynik;
wynik=a/c;
printf("Wynik działania to: %f", wynik);
return 0;
}
Co robię nie tak ?
wynik=a/c; // dzielisz liczbę całkowita przez całkowitą wynik wychodzi całkowity z odrzuceniem reszty po czym konwertujesz go na typ zmiennoprzecinkowy.
// użyj jednego z dwóch:
wynik=a/(float)c;
wynik=(float)a/c;
To się nawet nie kompiluje :D Nie ma zmiennej c.
OK, a założmy taką sytuację.
Podany wynik chcę podać w procentach, mam to przemnożyć razy 100 żeby przesunąć przecinek o 2 miejsca? Czy użyć jakiejś funkcji ?
przykładowo:
#include <stdio.h>
int main()
{
int a,b;
float wynik;
wynik=(float(a/b)) * 100;
printf("Uzyskaleś %f %", wynik);
return 0;
}
**Chodziło o zmienną b. ** Czeski błąd.
No cóż... najkrótszy sposób to przemnożenie. Trochę dłuższy to użycie sprintf do konwersji float'a na łańcuch i przesunięcie kropki o te 2 znaki w prawo. W sprintf zamiast samego %f możesz sobie formatować "wygląd liczby". Zamiast %f spróbuj sobie napisać np. %.02f. Ale wątpię, żeby się dało tak przesunąć kropkę.
Ale właśnie przemnożenie jakoś nie działa ;/
Z resztą możecie sami spróbować wkleić ten kod i zobaczyć nie nic z tego nie wyniknie :(
A co w zasadzie ma liczyć? bo doprowadziłem do stanu używalności zmieniając int na float,teraz wygląda tak
#include <stdio.h>
int main()
{
float a=3,b=100;//zakładam że wartości będziesz jakoś wczytywał
float wynik;
wynik=(a/b) * 100;
printf("Uzyskaleś %f %", wynik);
return 0;
}
I dostaję: Uzyskaleś 3.000000.
No przypuścmy że mamy dwie liczby typu całkowitego a i b.
Chcemy sprawdzić jaki procent liczby a stanowi liczba b.
No to wydaję mi się że wynik trzeba ustawić na float i zrobić proste dzielenie, ale ja chcę wynik otrzymać w procentach a nie w ułamku dziesiętnym.
Może istnieje jakaś funkcja z bibliotek która by to zrobiła a o której nie mam pojęcia ?
Dzieki za dotychczasowe odpowiedzi!
#include <cstdio>
int main()
{
int a = 3;
int b = 8;
float wynik = ((float) a / (float) b) * 100.0f;
printf("Liczba %d to %.0f%% liczby %d\n", a, wynik, b);
return 0;
}
Ewentualnie w printfie zmieniasz %.0f na %.xf, gdzie x to liczba miejsc po przecinku, które wyświetlamy.
#include <cstdio>
int main()
{
int a = 3,b = 8;
float wynik = 100.0*a/b;
printf("Liczba %d to %.0f%% liczby %d\n", a, wynik, b);
return 0;
}