Czy istnieje makro lub funkcja do skonstruowania float (double) z danego znaku, mantysy i wykładnika (wszystkie binarne lub dziesiętne), która zwraca poprawną liczbę zmiennoprzecinkową (podwójną) lub zwraca NaN, jeśli liczba określona przez dane wejściowe nie jest równa reprezentowalne jako float (double)?Makro lub funkcja do skonstruowania float (double) z danego znaku, mantysy i wykładnika?
9
A
Odpowiedz
12
Funkcja, której szukasz, to ldexp
.
+2
+1 http://pl.cppreference.com/w/cpp/numeric/math/ldexp – 111111
+1
Zauważ, że ldexp (1.0,1024) zwraca inf, a ldexp (1,0, -1075) zwróci 0.0 i ldexp (3.0, -1075) zaokrągli górną do ldexp (4,0, -1075) ... Nie są reprezentowalne (dokładnie), ale nie dostaniesz NaN. –
Powiązane problemy
- 1. double lub float, który jest szybszy?
- 2. jak funkcja makro klamrami lub do..while
- 3. float vs double (w Javie)
- 4. Float vs double Math Java
- 5. Czy tablica float, float [] i double [] są różne lub takie same?
- 6. Mając szorstka razem zdecydowaliśmy się na float, double, lub DZIESIĘTNY
- 7. W jaki sposób można drukować wartości zmiennoprzecinkowe bez formatu mantysy/wykładnika?
- 8. Abstrahowanie przez Float, Double i BigDecimal w Scala
- 9. Elixir Makro: Power ** Funkcja
- 10. C#: double [] [] i double [,]
- 11. niejawna konwersja/promocja float lub double w wyrażeniach między C# i Java
- 12. Konwersja double float bez opierania się na tryb FPU zaokrąglania
- 13. Haskell monada: IO [Double] do [IO Double]
- 14. error: funkcja "atomicAdd (double *, double)" została już zdefiniowana
- 15. Funkcja vs. Makro w CMake
- 16. Java: Czy powinienem używać float lub Float?
- 17. Dla double f, float g, jak znaleźć największy int i, taki, że i * g <= f
- 18. zależny makro makro
- 19. Do czego służy funkcja do while (0), gdy definiujemy makro?
- 20. Parsowanie int lub float z FParsec
- 21. funkcja lub deklaracja wystąpienia?
- 22. Przenośne drukowanie wykładnika podwójnego do C++ iostreams
- 23. Preprocesor C: makro i makro makra stringi
- 24. Czy istnieje wbudowana funkcja powtarzania ciągu znaków lub znaku w .net?
- 25. Tworzenie klucza publicznego RSA z jego modułu i wykładnika
- 26. Okrągły pływaka do danego precyzją
- 27. Redefiniowanie lub zmieniając wartość makro
- 28. Dlaczego istnieje niejawna konwersja z Float/Double na BigDecimal, ale nie z ciągu?
- 29. Odnośnie typu float precyzją
- 30. Introspect argument przekazany do makro Scala
Nie znam żadnych standardowych makr lub funkcji, ale byłoby całkiem łatwo je stworzyć. Na przykład, jeśli twoja mantysa jest liczbą całkowitą ze znakiem, pomnóż to przez pow (podstawa, wykładnik). –
Każda operacja matematyczna jest podejrzewana o zmianę wyniku, więc binarna reprezentacja wyniku nie będzie identyczna z podanymi składnikami. – mbaitoff