W języku Java (liczba/0) generuje wyjątek arytmetyczny, gdy (liczba/0.0) = nieskończoność. Dlaczego tak się dzieje?Wyjątek arytmetyczny wyrzucony w Javie
Odpowiedz
Ponieważ liczby zmiennoprzecinkowe IEEE-754 mają reprezentację nieskończoności, natomiast wartości całkowite nie.
Innymi słowy, każdy wzór bitowy w int
reprezentuje normalną liczbę całkowitą; zmiennoprzecinkowych są raczej bardziej skomplikowana ze +/- nieskończoność „a nie ilość” wartości (NaN), znormalizowane wartości, wartości itp niedorozwinięty
Ponadto można sprawdzić JLS, który mówi:
15.17.2 Operator oddziału
Z drugiej strony, jeśli wartość dzielnika w liczbie całkowitej jest równa 0, wówczas generowany jest wyjątek arytmetyczno-wyjątkowy.
Skutkiem podziału zmiennoprzecinkowej zależy od specyfikacji IEEE arytmetyczne: Jeśli wynik nie jest liczbą, znak wynik jest dodatni, jeżeli oba argumenty mają ten sam znak, negatywnego czy operandów mają różne znaki.
Podział niezerowej skończonej wartości o zero powoduje podpisanie nieskończoności. Znak jest określony przez regułę podaną powyżej.
Dziękuję, proszę pana. To bardzo pomogło. – Mohit
Pływający-point standard IEEE, obsługiwana przez niemal wszystkich nowoczesnych procesorów, określa, że każda operacja arytmetyczna zmiennoprzecinkowe, w tym dzielenie przez zero, ma dobrze zdefiniowanego rezultatu. Standard obsługuje podpisane zero, a także nieskończoność i NaN (nie numer). Istnieją dwa zera, +0 (zero dodatnie) i -0 (zero ujemne), co eliminuje wszelkie niejednoznaczności podczas dzielenia. W arytmetyce IEEE 754, ÷ +0 jest dodatnią nieskończonością, gdy a jest dodatnią, ujemną nieskończonością, gdy a jest ujemna, i NaN, gdy a = ± 0. Znaki nieskończoności zmieniają się podczas dzielenia przez -0 zamiast tego.
Podział całkowity przez zero jest zwykle traktowany inaczej niż zmiennoprzecinkowy, ponieważ nie ma reprezentacji całkowitej dla wyniku. Niektóre procesory generują wyjątek, gdy próbuje się podzielić liczbę całkowitą przez zero, chociaż inne po prostu kontynuują i generują niepoprawny wynik podziału. Wynik zależy od sposobu podziału i może wynosić zero lub czasami największą możliwą liczbę całkowitą.
Dziękuję, proszę pana. To bardzo pomogło. – Mohit
- 1. Wyrzucony wyjątek Intermittent związany z OnePerRequestModule
- 2. Wyrzucony wiosenny wyjątek JpaSystemException zamiast DuplicateKeyException
- 3. Dlaczego moje szyfrowanie Java RSA daje mi wyjątek arytmetyczny?
- 4. Jak zdefiniować wyjątek wyrzucony przez odniesienie w Apache Camel
- 5. Wyjątek wyrzucony z usługi nie przyłapania w kontrolerze
- 6. Nieznany wyjątek NullPointerException w Javie
- 7. Wyrzucony wyjątek StackOverflowException na systemach x64; działa poprawnie na x86
- 8. GLSL arytmetyczny operator
- 9. FileNotFoundException losowo wyrzucony
- 10. CXF wyjątek klient: Interceptor dla {XXX} został wyrzucony wyjątek, odwracanie teraz
- 11. void * vs. char * wskaźnik arytmetyczny
- 12. Wyjątek bez śledzenia stosu w Javie
- 13. Arytmetyczny problem ze skryptem powłoki
- 14. Testy osx maven uruchomione Wyjątek: java.lang.OutOfMemoryError wyrzucony z UncaughtExceptionHandler w wątku "główny"
- 15. C++ Jak uniknąć zmiennoprzecinkową błąd arytmetyczny
- 16. To w Javie - Wyjątek w wątku "główny" java.lang.StackOverflowError
- 17. Rozszerz wyjątek wyrzucony z ASP.NET podczas wywoływania usługi sieci Web z JQuery
- 18. Czy mogę uzyskać serię dobrych wyników i wyrzucony wyjątek od Moq
- 19. onmouseout nie wyrzucony, gdy element zniknie
- 20. Błąd vs wyjątek w Dart
- 21. ConfigurationException w Javie?
- 22. Błąd krytyczny PHP: Niezamknięty wyjątek "Wyjątek"
- 23. Jak ignorować Wyjątki w Javie
- 24. Jak ustawić timer w Javie?
- 25. Przepisanie instrukcji warunkowej w Javie
- 26. Wyjątek wychodzi Close() w try-with-zasobu
- 27. JavaPOS Hello World w Javie
- 28. Jak przekazać wyjątek jawnie do głównego wątku w C#
- 29. Rails 3 zignorować wyjątek wyjątek wyjątek Postgres
- 30. "zwracana wartość" z wyjątku Konstruktora w Javie?
Jeśli do każdego pytania o liczby zmiennoprzecinkowe został dodany znacznik zmiennoprzecinkowy, otrzymalibyśmy kolejną złotą odznakę! –
Dziękuję, proszę pana. To bardzo pomogło. – Mohit