eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPorównywanie liczb, double float › Re: Porównywanie liczb, double float
  • Data: 2019-07-22 17:24:46
    Temat: Re: Porównywanie liczb, double float
    Od: fir <p...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu piątek, 12 lipca 2019 07:27:56 UTC+2 użytkownik DMR napisał:
    > > Zamieszcze tu po raz 473 w ciagu 20 lat podstawową formułkę
    > > (Ba! KANON!)
    >
    >
    > To ja poprosiłbym o jakiś patent na odporne na zaokrąglenia rozdzielenie części
    całkowitej i ułamkowej w zmiennej typu double.
    >
    >
    >
    > > ponaglenia o pilną zapłatę 0.00PLN
    >
    >
    > No właśnie.
    > Przykładowo, muszę zrobić: 12345.6789 zł -> 12345 zł 68 gr
    >
    > Wiadomo:
    >
    > double suma, f;
    > int zlote, grosze;
    >
    > ...
    >
    > suma += 0.005;
    >
    > zlote = (int)suma;
    > f = suma - zlote;
    > grosze = (int)(f * 100.0);
    >
    > Problemy mogą pojawić w przypadku wartości praktycznie równych wartościom
    całkowitym.
    > Gdyby na skutek jakichś zaokrągleń wartość f okazała się ujemna, to nie ma problemu
    - (int) i tak "dociągnie" ją do zera.
    >
    > Gorzej, gdyby np. suma = 1234.9999999999999997, za to teoretycznie f =
    0.9999999999999997 za sprawą zabłąkanego bitu na końcu przeskoczyła na f =
    1.0000000000000001.
    > Wtedy wyjdzie 1234 zł 100 gr...
    >
    > Chyba, że nie potrzebnie się martwię.
    > Testowałem to wielokrotnie dla miliardów złośliwie wygenerowanych danych "z
    pogranicza" - ani razu się nie wywaliła.
    >
    > No, ale... :-)

    chyba cos kolega piepszy

    zlote = (int)suma;
    f = suma - zlote;
    grosze = (int)(f * 100.0);

    nie chce mi sie nad tym za dlugo zastanawiac ale na oko to bedzie dzialac
    zawsze poprawnie (zakladam ze wartosc suma jest dodatnia i ze chodzi o zaokraglenie w
    dol, nie mam pojecia jakie reguly zaokraglania pieniedzy panuja w bankach)

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

  • 22.07.19 21:56 fir
  • 24.07.19 19:19 DMR
  • 24.07.19 21:13 AK
  • 24.07.19 22:39 fir
  • 26.07.19 20:35 AK
  • 12.01.20 19:17 DMR

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: