| Termin | Definicja |
|---|---|
| Zgodność typów w operacjach arytmetycznych | Zgodność typów w operacjach arytmetycznych zapobiega nieoczekiwanym błędom lub zaokrągleniom wyniku. Dlaczego typy danych mają znaczenie w obliczeniachZgodność typów w operacjach arytmetycznych oznacza, że wartości używane we wspólnym działaniu mają określony sposób reprezentacji, zakres oraz reguły interpretacji. Liczba całkowita, liczba zmiennoprzecinkowa, liczba dziesiętna zapisana jako tekst i wartość logiczna mogą wyglądać podobnie na ekranie, ale program przechowuje je w różny sposób. Przed wykonaniem działania środowisko programistyczne może pozostawić typy bez zmian, automatycznie je przekonwertować albo zgłosić błąd. Problem pojawia się wtedy, gdy wynik obliczenia nie mieści się w zakresie danego typu albo gdy konwersja zmienia jego znaczenie. Dodanie dwóch liczb całkowitych zwykle daje wynik całkowity, natomiast dzielenie całkowite może odrzucić część ułamkową. Przykładowo, w językach, w których oba operandy są całkowite, działanie 5 / 2 może zwrócić 2, a nie 2,5. Aby zachować część ułamkową, co najmniej jeden operand musi zostać potraktowany jako liczba rzeczywista lub dziesiętna. Konwersje, zakres i utrata dokładnościKonwersja typu może być jawna albo niejawna. Jawna konwersja jest zapisana bezpośrednio w kodzie, na przykład przez rzutowanie liczby całkowitej do typu zmiennoprzecinkowego. Konwersja niejawna jest wykonywana przez kompilator lub interpreter zgodnie z regułami konkretnego języka. Zwykle typ o mniejszym zakresie lub niższej precyzji jest przekształcany do typu mogącego reprezentować większy zakres, ale szczegóły zależą od języka i operatora. Typy całkowite przechowują liczby bez części ułamkowej i mają skończony zakres. Przekroczenie tego zakresu może skutkować błędem, wyjątkiem albo przepełnieniem, w którym wynik zostaje zawinięty zgodnie z reprezentacją bitową. Typy zmiennoprzecinkowe pozwalają zapisać wartości bardzo duże i bardzo małe, lecz nie reprezentują dokładnie wszystkich liczb dziesiętnych. Z tego powodu działanie takie jak 0,1 + 0,2 może dać wartość wyświetlaną z niewielką różnicą od 0,3. Przy porównywaniu wyników zmiennoprzecinkowych często stosuje się tolerancję zamiast sprawdzania idealnej równości. Typ dziesiętny, o ile jest dostępny w danym środowisku, przechowuje wartości z określoną precyzją dziesiętną i jest użyteczny w obliczeniach finansowych. Nie eliminuje jednak wszystkich problemów: trzeba ustalić liczbę miejsc po przecinku, sposób zaokrąglania oraz reakcję na przekroczenie zakresu. Mieszanie typów dziesiętnych ze zmiennoprzecinkowymi może prowadzić do błędów konwersji albo do wyniku o innej dokładności niż oczekiwana. Typowe błędy w aplikacjach na laptopach i komputerach PCW codziennych programach błąd zgodności typów może wystąpić podczas kalkulacji w arkuszu kalkulacyjnym, skrypcie, aplikacji użytkowej albo formularzu internetowym. Wartość pobrana z pola tekstowego często jest ciągiem znaków, nawet jeśli zawiera cyfry. Próba dodania tekstu „12” do liczby 3 może zostać odrzucona, potraktowana jako 123 albo wykonana po automatycznej konwersji do liczby. Bez sprawdzenia typu i poprawności danych program może też przyjąć pustą wartość jako zero lub wygenerować błąd w trakcie działania. Osobną kategorię stanowią jednostki i skale, które nie zawsze są kontrolowane przez sam typ danych. Dodanie 500 megabajtów do wartości wyrażonej w gigabajtach jest matematycznie możliwe dopiero po ujednoliceniu jednostek. Podobnie temperatura w stopniach Celsjusza i Fahrenheita wymaga odpowiedniego przeliczenia, mimo że obie wartości mogą być zapisane jako liczby zmiennoprzecinkowe. Sam fakt zgodności typów technicznych nie gwarantuje więc poprawności znaczeniowej działania. Bezpieczny przepływ danych obejmuje sprawdzenie wartości wejściowych, jawne określenie oczekiwanego typu, kontrolę zakresu oraz testy przypadków granicznych. Należy uwzględnić zero, liczby ujemne, bardzo duże wartości, brak danych, wartości ułamkowe i dzielenie przez zero. W aplikacjach działających na laptopie lub komputerze PC warto również sprawdzić, czy problem wynika z programu, ustawień regionalnych, formatu przecinka dziesiętnego lub uszkodzonego pliku wejściowego, a nie z samego sprzętu. Diagnostyka problemów z obliczeniamiDiagnostykę należy rozpocząć od odtworzenia działania na konkretnych danych i zapisania typów operandów oraz oczekiwanego wyniku. Pomocne jest rozdzielenie etapów: odczytu danych, konwersji, obliczenia, zaokrąglenia i prezentacji. Jeżeli wartość jest poprawna przed konwersją, lecz zmienia się po niej, przyczyną jest reguła rzutowania lub ograniczenie typu. Jeżeli wynik jest poprawny wewnętrznie, ale niepoprawnie wyświetlany, trzeba sprawdzić formatowanie, separator dziesiętny i liczbę prezentowanych miejsc. Podczas serwisowania laptopa lub komputera PC Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów stacjonarnych i podzespołów. W przypadku zgłoszenia dotyczącego błędnych obliczeń można oddzielić awarię sprzętową od problemu aplikacji, systemu lub danych. Diagnostyka sprzętu jest uzasadniona między innymi wtedy, gdy występują samoczynne restarty, błędy pamięci, niestabilność systemu albo uszkodzenia nośnika, natomiast powtarzalny błąd dla tych samych danych zwykle wskazuje na reguły programu lub nieprawidłowe typowanie wartości. |