-
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)
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
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2025-01-06 śnieg
- 2025-01-05 Żarówka do lampy z czujnikiem ruchu
- 2025-01-05 Rozkręcają się
- 2025-01-04 pozew za naprawę sprzętu na youtube
- 2025-01-04 gasik
- 2025-01-04 13. Raport Totaliztyczny: Powszechna Deklaracja Praw Człowieka Nie Chroni Przed Wyzyskiem Ani Przed Eksploatacją
- 2025-01-04 Zbieranie danych przez www
- 2025-01-04 reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- 2025-01-04 w Nowym Roku 2025r
- 2025-01-04 Warszawa => Specjalista ds. IT - II Linia Wsparcia <=
- 2025-01-04 Warszawa => Java Developer <=
- 2025-01-04 Warszawa => Spedytor Międzynarodowy <=
- 2025-01-04 Warszawa => System Architect (Java background) <=
- 2025-01-04 Wrocław => Application Security Engineer <=
- 2025-01-04 Chrzanów => Specjalista ds. public relations <=