numeric_limits<T>::min();
numeric_limits<T>::lowest();
Czym różnią się wartości zwracane przez obie funkcje?numeric_limits najniższe i minimalne funkcje składowe
numeric_limits<T>::min();
numeric_limits<T>::lowest();
Czym różnią się wartości zwracane przez obie funkcje?numeric_limits najniższe i minimalne funkcje składowe
Punkt 18.3.2.4 z C++ 11 Określono:
static constexpr T min() noexcept
;1 Minimalna wartość skończona.
2 Dla typów zmiennoprzecinkowych z denormalizacją zwraca minimalną dodatnią znormalizowaną wartość.
3 znaczące dla wszystkich kierunków
[...]
static constexpr T lowest() noexcept
;6 Skończona wartość x taka, że nie ma innej skończonej wartości y, gdzie y < x.
7 Znaczenie dla wszystkich specjalizacji, w których is_bounded! = False.
Przypis 197 następnie dodaje odpowiednią uwaga:
lowest()
jest konieczne, ponieważ nie wszystkie reprezentacje zmiennoprzecinkowe mają najmniejszą wartość (najbardziej negatywny), który jest negatywny z największych (najbardziej pozytywny) skończona wartość.
Jeśli zaznaczysz odniesienie do tych funkcji, np. this one for min
i this one for lowest
widać, że istnieją pewne wartości, które różnią się.
do unoszenia rodzajów punktów min
zwraca najmniejszą skończoną liczbę nie > 0
zakodowania w rodzaju (liczba o najniższej wartości bezwzględnej != 0
) podczas lowest
powraca najmniejsza skończoną liczbę, która jest zakodowania (tj ujemna liczba maksymalna bezwzględna wartość mniejsza niż -infinity
).
Najmniejsza reprezentowana liczba to nieskończoność ujemna; "najniższy" daje najmniejszą ** skończoną ** reprezentowalną wartość. –
Edytowane, dziękuję za komentarz. – filmor
+1, aby podać dokładny cytat ze standardu w mniej niż 5 minut. – Morwenn
w innym słowie "najniższy" zwraca coś podobnego do uzupełnienia 2s dla maksymalnej liczby całkowitej dodatniej. –
@Muhammadalaa: dla typów całkowitych nie ma różnicy między 'min()' a 'najniższym()'. –