-
Data: 2019-06-12 14:44:39
Temat: Re: Porównywanie liczb, double float
Od: "J.F." <j...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Użytkownik "Pszemol" napisał w wiadomości grup
dyskusyjnych:qdqqh6$n2f$...@d...me...
>Sub AlaMaKota(nieważne tutaj argumenty procedury)
>Dim len as Double
>len = CDbl("tekst wydłubany z RS232") - 1.8
>If len <> CDbl("inny tekst wydłubany z RS232) Then
> zgłoś błąd i kapitulujemy... kaput!
>Else
> lecimy z testami talej, wsio w pariadkie
>Endif.
>Pierwszy tekst z RS232 był 32.8, drugi 31. 32.8-1.8 = 31.
>Powinno być wszystko ok, bo w matematyce 31 równe jest 31 :-)
>Wynik porównania VB6 był 31 nie jest równe 31 i program
>kapitulował...
>Przyczyną błędu była różnica odejmowania wynosząca 15.1234e-15
>Dlaczego konwersja CDbl stringu 31 lub 32.8 dodaje jakieś
>śmieci do zmiennej double float na 15 miejscu po przecinku??
>A może odejmowanie stałej 1.8 wprowadza ten błąd?
>Czy to jest normalne zachowanie się VB6?
To nie jest problem VB, to jest problem przyjetego formatu liczb
rzeczywistych.
Albo problem programisty :-)
31 jest dokladne, 0.8 nie.
0.5 jest dokladne, 0.25 i 0.75 itd - ale wiekszosc liczb "dziesietnych
po przecinku" niestety nie.
Po prostu nie da sie zapisac 32.8 dokladnie.
Programista ma o tym wiedziec i sie zabezpieczyc :-)
>Czy inne Visuale jak VC++ lub VC# też tak mają?
To jest problem procesora z FP IEEEcostam.
Akurat .net ma dodatkowe formaty (Decimal), w ktorych powinno to
dzialac.
Tylko trzeba ie
Ale i tak bym dorzucil zabezpieczenie.
Problem promieniuje na bazy danych, gdzie mamy duzo kwot, a te grosze
tez nie sa dokladne :-)
J.
Następne wpisy z tego wątku
- 12.06.19 14:47 Wojciech Piechowski
- 12.06.19 14:48 Zbych
- 12.06.19 14:56 Irek.N.
- 12.06.19 15:21 JDX
- 12.06.19 16:52 Szyk Cech
- 12.06.19 16:53 Queequeg
- 12.06.19 16:54 Cezary Grądys
- 12.06.19 17:27 J.F.
- 12.06.19 17:45 s...@g...com
- 12.06.19 18:17 stary grzyb
- 13.06.19 15:24 Pszemol
- 13.06.19 15:35 Pszemol
- 13.06.19 15:36 Pszemol
- 13.06.19 15:37 Pszemol
- 13.06.19 15:39 Pszemol
Najnowsze wątki z tej grupy
- OLED SSD1306 - degradacja?
- Który symulator AVR jest ,,prawilny"?
- Disk on Module, czym to odczytać?
- Pasta ochronna? Lutownicza?
- zagadka pneumatyczna
- Klip testowy, jak sie to używa
- Jak sie smazy elektronike z odleglosci kilkuset metrów?
- William Shockley, co-inventor of the transistor
- Gazowy kocioł CO regulacja cyklingu i regulacja pogodowa
- Zamek elektroniczny
- szablon do pasty DIY
- Głośnik potrzebny
- Silikonowy przewód ekranowany
- Wtyk bananowy ekranowany
- Co może być gorsze od pożaru elektryka?
Najnowsze wątki
- 2025-11-20 OLED SSD1306 - degradacja?
- 2025-11-20 Rzeszów => International Freight Forwarder <=
- 2025-11-20 Warszawa => Senior IT Recruitment Consultant <=
- 2025-11-20 Warszawa => Konsultant Microsoft Dynamics AX/365 SCM Consultant - Serv
- 2025-11-20 Warszawa => Programista Dynamics 365 Commerce/POS <=
- 2025-11-20 Warszawa => Konsultant ERP Microsoft Dynamics 365 Commerce <=
- 2025-11-20 Kraków => Production Coordinator / Representant Product Dev <=
- 2025-11-20 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-11-20 Warszawa => Microsoft Dynamics 365 Finance Consultant <=
- 2025-11-20 Bieruń => Junior Dynamics 365 Finance Consultant <=
- 2025-11-20 Bieruń => Tester Automatyzujący (Junior/Mid) <=
- 2025-11-20 rejestrować blog/kanał yt jako prasa
- 2025-11-20 Warszawa => ERP Microsoft Dynamics 365 Commerce Consultant <=
- 2025-11-20 Warszawa => Dynamics 365 Commerce/POS Developer <=
- 2025-11-20 Który symulator AVR jest ,,prawilny"?




Ile kosztują tanie mieszkania w polskich metropoliach?