std::numeric_limits::digits10
Aus cppreference.com
< cpp | types | numeric limits
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
static const int digits10 |
(bis C + +11) | |
static constexpr int digits10 |
(seit C++11) | |
Der Wert std::numeric_limits<T>::digits10 ist die Anzahl der Basis-10 Ziffern, die durch den Typ
10(radix) und abgerundet .
T
unverändert dargestellt werden kann, das heißt, jedes Zahl mit so vielen Dezimalstellen kann auf einen Wert des Typs T
und zurück nach dezimaler Form umgewandelt werden, ohne Änderung durch Rundung oder Überlauf. Für Basis-radix Typen, ist es das Wert digits (digits-1 für Fließkomma-Typen) multipliziert von log10(radix) und abgerundet .
Original:
The value of std::numeric_limits<T>::digits10 is the number of base-10 digits that can be represented by the type
10(radix) and rounded down.
T
without change, that is, any number with this many decimal digits can be converted to a value of type T
and back to decimal form, without change due to rounding or overflow. For base-radix types, it is the value of digits (digits-1 for floating-point types) multiplied by log10(radix) and rounded down.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten] Standard Spezialisierungen
T
|
Wert std::numeric_limits<T>::digits10
Original: value of std::numeric_limits<T>::digits10 The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
/* non-specialized */ | 0 |
bool | 0 |
char | std::numeric_limits<char>::digits * std::log10(2) |
signed char | std::numeric_limits<signed char>::digits * std::log10(2) |
unsigned char | std::numeric_limits<unsigned char>::digits * std::log10(2) |
wchar_t | std::numeric_limits<wchar_t>::digits * std::log10(2) |
char16_t | std::numeric_limits<char16_t>::digits * std::log10(2) |
char32_t | std::numeric_limits<char32_t>::digits * std::log10(2) |
short | std::numeric_limits<short>::digits * std::log10(2) |
unsigned short | std::numeric_limits<signed short>::digits * std::log10(2) |
int | std::numeric_limits<int>::digits * std::log10(2) |
unsigned int | std::numeric_limits<signed int>::digits * std::log10(2) |
long | std::numeric_limits<long>::digits * std::log10(2) |
unsigned long | std::numeric_limits<unsigned long>::digits * std::log10(2) |
long long | std::numeric_limits<long long>::digits * std::log10(2) |
unsigned long long | std::numeric_limits<unsigned long long>::digits * std::log10(2) |
float | FLT_DIG |
double | DBL_DIG |
long double | LDBL_DIG |
[Bearbeiten] Beispiel
Ein 8-Bit-Binär-Typ kann zwei beliebige zweistellige Dezimalzahl exakt darstellen, aber 3-stellige Dezimalzahlen 256 .. 999 können nicht dargestellt werden. Der Wert
digits10
für einen 8-Bit-Typ ist 2 (8 * std::log10(2) ist 2.41)Original:
An 8-bit binary type can represent any two-digit decimal number exactly, but 3-digit decimal numbers 256..999 cannot be represented. The value of
digits10
for an 8-bit type is 2 (8 * std::log10(2) is 2.41)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Die Standard-32-Bit IEEE 754 Floating-Point-Typ hat eine 24-Bit-Bruchteil (23 Bit geschrieben, ein stillschweigend), die darauf hindeuten, dass es 7-stellige Dezimalzahlen (24 * std::log10(2) ist 7.22) darstellen kann , sondern relativ Rundungsfehler sind nicht einheitlich und einige Fließkommawerte mit 7 Dezimalstellen nicht überleben Umstellung auf 32-Bit-Float-und zurück: die kleinste positive Beispiel ist 8.589973e9, die 8.589974e9 nach der Rundreise wird diese Rundungsfehler nicht überschreiten kann. ein Bit in der Darstellung und
digits10
als (24-1)*std::log10(2), die 6,92 ist, berechnet. Abrunden ergibt den Wert 6 .Original:
The standard 32-bit IEEE 754 floating-point type has a 24 bit fractional part (23 bits written, one implied), which may suggest that it can represent 7 digit decimals (24 * std::log10(2) is 7.22), but relative rounding errors are non-uniform and some floating-point values with 7 decimal digits do not survive conversion to 32-bit float and back: the smallest positive example is 8.589973e9, which becomes 8.589974e9 after the roundtrip. These rounding errors cannot exceed one bit in the representation, and
digits10
is calculated as (24-1)*std::log10(2), which is 6.92. Rounding down results in the value 6.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten] Siehe auch
[statisch] |
die Radix oder Integer Basis durch die Darstellung des angegebenen Typs verwendet Original: the radix or integer base used by the representation of the given type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static Mitglied konstanten) |
[statisch] |
Anzahl von Ziffern, die radix unverändert dargestellt werden kann Original: number of radix digits that can be represented without change The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static Mitglied konstanten) |
[statisch] |
eine mehr als die kleinste negative Macht des Radix, die eine gültige normalisierten Gleitkomma-Wert ist Original: one more than the smallest negative power of the radix that is a valid normalized floating-point value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static Mitglied konstanten) |
[statisch] |
eine mehr als die größte ganze Macht der radix, die eine gültige endlichen Floating-Point-Wert ist Original: one more than the largest integer power of the radix that is a valid finite floating-point value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static Mitglied konstanten) |