scanf printf i float problem

0

Witam,
..mam taki problem z funkcjami scanf i printf ..mianowicie..jak podaje do wczytania pewną liczbę (np: 356.32) to w wydruku (printf otrzymuję na ekranie wynik bardzo podobny..ale nie ten sam..mianowicie..356.3200002..jak i dlaczego???oraz czy można jakoś wczystać to tak aby wczytywał to co się mu podaje??
//zresztą przy operacjach dodawania..i mnożenia liczby float (rowniez double) tez zmienia wynik..????

0

>..mam taki problem z funkcjami scanf i printf ..mianowicie..jak podaje do ?>wczytania pewną liczbę (np: 356.32) to w wydruku (printf otrzymuję na ekranie >wynik bardzo podobny..ale nie ten sam..mianowicie..356.3200002..jak i ?>dlaczego???oraz czy można jakoś wczystać to tak aby wczytywał to co się mu >podaje??
Tak
zamiast: scanf("%f",&float);
wystarczy scanf ("%d.%d",&int1,&int2);
a potem Currenzy zmienna=int1+((Currency(int2)/100
przy czym obliczenia mozna przeprowadzac na zmiennych typu Currency - wada tego rozwiązania: Currency obsługuje tylko 4 miejsca po przecinku.

>zresztą przy operacjach dodawania..i mnożenia liczby float (rowniez double) tez >zmienia wynik..????
Na to sie nic nie poradzi.. (chyba ze "przeskaluje" sie wejscie na jakiś typ całkowity)

0

Jak to zrobic, juz zostalo odpowiedziane, a ja dodam, ze przekreca liczby dlatego ze pewnych ulamkow nie da sie po prostu dokladnie przedstawiac w syst. pozycyjnych. Przyklad dla syst. dziesietnego. Dotyczy m.in. ulamkow o rozwinieciu okresowym.

Zapis Zapis pozycyjny
ulamkowy
1 = 1.00000
1 / 3 = 0.33333 | *3
1 = 0.99999 << Przeklamanie

W systemie dwojkowym:
356.32 to ulamek o rozwinieciu nieskonczonym okresowym - PRZEKRECI
356.125 to ulamek o rozwinieciu skonczonym - NIE PRZEKRECI

1 użytkowników online, w tym zalogowanych: 0, gości: 1