IEEE 754 jest najpowszechniejszym i szeroko stosowanym standardem zmiennoprzecinkowym, w szczególności binary32 o pojedynczej precyzji, czyli zmiennoprzecinkowy i podwójnej precyzji binary64, czyli formaty podwójne.
Powszechnie wiadomo, że NaN rozmnażają się w arytmetyce, ale nie mogłem znaleźć żadnych demonstracji, więc napisałem mały test: #include <limits> #include <cstdio> int main(int argc, char* argv[]) { float qNaN = std::numeric_limits<float>::quiet_NaN(); float neg = -qNaN; float sub1 = 6.0f - qNaN; float sub2 = qNaN - 6.0f; float sub3 …
Dlaczego porównania wartości NaN zachowują się inaczej niż wszystkie inne wartości? Oznacza to, że wszystkie porównania z operatorami ==, <=,> =, <,> gdzie jedna lub obie wartości to NaN, zwraca false, w przeciwieństwie do zachowania wszystkich innych wartości. Podejrzewam, że upraszcza to w pewien sposób obliczenia numeryczne, ale nie mogłem …
Typ danych zmiennoprzecinkowych to 32-bitowy zmiennoprzecinkowy IEEE 754 o pojedynczej precyzji, a podwójny typ danych to 64-bitowy zmiennoprzecinkowy IEEE 754 o podwójnej precyzji. Co to znaczy? A kiedy powinienem używać float zamiast double lub vice versa?
Dla jasności, jeśli używam języka, który implementuje zmiennoprzecinkowe IEE 754 i oświadczam: float f0 = 0.f; float f1 = 1.f; ... a następnie wydrukuj je z powrotem, otrzymam 0,0000 i 1,0000 - dokładnie. Ale IEEE 754 nie jest w stanie przedstawić wszystkich liczb wzdłuż rzeczywistej linii. Bliskie zeru „luki” są …
Wiem, że większość liczb dziesiętnych nie ma dokładnej reprezentacji zmiennoprzecinkowej ( czy matematyka zmiennoprzecinkowa jest zepsuta? ). Ale nie rozumiem, dlaczego 4*0.1jest ładnie drukowane 0.4, ale 3*0.1nie jest, gdy obie wartości mają w rzeczywistości brzydkie reprezentacje dziesiętne: >>> 3*0.1 0.30000000000000004 >>> 4*0.1 0.4 >>> from decimal import Decimal >>> Decimal(3*0.1) …
Nie, to nie jest kolejne pytanie „Dlaczego jest (1 / 3.0) * 3! = 1” . Ostatnio dużo czytałem o zmiennoprzecinkowych; a konkretnie, w jaki sposób te same obliczenia mogą dać różne wyniki w przypadku różnych architektur lub ustawień optymalizacji. Jest to problem z grami wideo, które przechowują powtórki lub …
Czy w poniższym przykładzie można uzyskać dzielenie przez 0 (lub nieskończoność)? public double calculation(double a, double b) { if (a == b) { return 0; } else { return 2 / (a - b); } } W normalnych przypadkach oczywiście nie. Ale co jeśli ai bsą bardzo bliskie, może (a-b)skutkować …
PHP słynie z żonglowania typami. Muszę przyznać, że intryguje mnie to i ciężko mi jest znaleźć podstawowe logiczne / fundamentalne rzeczy w porównaniach. Na przykład: Jeśli $a > $bjest prawdą i $b > $cjest prawdą, czy musi to oznaczać, że zawsze$a > $c jest prawdą? Kierując się podstawową logiką, powiedziałbym …
Czytałem o zmiennoprzecinkowych i rozumiem, że NaN może wynikać z operacji. Ale nie mogę dokładnie zrozumieć, co to są koncepcje. Jaka jest różnica między nimi? Który z nich można stworzyć podczas programowania w C ++? Czy jako programista mógłbym napisać program, który powoduje sNaN?
>>> (float('inf')+0j)*1 (inf+nanj) Czemu? Spowodowało to paskudny błąd w moim kodzie. Dlaczego 1tożsamość multiplikatywna nie jest dawaniem (inf + 0j)?
Strona odniesienia isnormal () mówi: Określa, czy podana liczba zmiennoprzecinkowa arg jest normalna, tj. Nie jest równa zeru, podnormalna, nieskończona ani NaN. Liczba równa zero, nieskończona lub NaN jest jasne, co to znaczy. Ale mówi też, że jest to nienormalne. Kiedy liczba jest niższa od normy?
W JavaScript wartość NaN może być reprezentowana wewnętrznie przez szeroki zakres 64-bitowych dubletów. W szczególności każde podwójne z następującą reprezentacją bitową: x111 1111 1111 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Jest interpretowany jako NaN. Moje pytanie brzmi: załóżmy, że rzutuję dwa 32-bitowe odcienie …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.