Co to są liczbowe liczbowe liczbowe w C#

Co to są liczbowe liczbowe liczbowe w C#

W programowaniu termin „zmienny punkt” odnosi się do rodzaju danych numerycznych używanych do reprezentowania liczb dziesiętnych. Istnieje kilka różnych rodzajów danych zmiennoprzecinkowych, których można użyć w C#, każdy z własnym zestawem cech i możliwości.

W tym artykule przyjrzymy się bliżej liczbowym typom liczbowym w C#.

Zrozumienie liczbowych typów danych

Zanim omówimy typ danych o zmiennym punkcie, ważne jest, aby mieć podstawowe zrozumienie różnych rodzajów danych numerycznych, które są dostępne w C#. Powszechnie używane dane numeryczne obejmują:

  • Liczba całkowita: Używane do reprezentowania liczb (e.G., 1, 2, 3 itp.).
  • Punkt zmiennoprzecinkowy: Używane do reprezentowania liczb dziesiętnych (e.G., 1.2, 3.14 itd.).
  • Dziesiętny: Używane do reprezentowania liczb o wyższej precyzji niż liczby zmiennoprzecinkowe (e.G., 3.14159265358979323846).

Teraz, jak wiemy, zmiennoprzecinkowy jest używany do przechowywania w nich danych dziesiętnych. Następnym krokiem jest omówienie wszystkich różnych form liczb zmiennoprzecinkowych.

Podstawy danych zmiennoprzecinkowych

Dane dotyczące zmiennoprzecinkowego są używane do reprezentowania liczb dziesiętnych, których nie można dokładnie reprezentować za pomocą danych liczb całkowitych. Na przykład, jeśli chcesz reprezentować numer 1.5 Korzystając z danych liczb całkowitych, musisz zaokrąglić je w górę lub w dół do najbliższej wartości (1 lub 2). Jednak przy danych zmiennoprzecinkowych możesz reprezentować 1.5 dokładnie.

Poniżej znajdują się typy punktów zmiennoprzecinkowych używane w C# do reprezentowania wartości dziesiętnych o różnych zakresach i poziomach precyzji.

  • platforma: Jest to 32-bitowy typ danych o zmiennym punkcie
  • podwójnie: Jest to 64-bitowy typ danych o zmiennym punkcie
  • dziesiętny: Jest to 128-bitowy typ danych o zmiennym punkcie

We wszystkich trzech typach danych zmiennoprzecinkowych, dziesiętne ma większą precyzję.

Charakterystyka typów danych zmiennoprzecinkowych

Liczby liczbowe o zmiennym punkcie w C# są używane do reprezentowania liczb o części ułamkowej. Poniższa tabela ilustruje charakterystykę różnych typów danych zmiennoprzecinkowych w C#:

Zmiennoprzecinkowe typy danych Zakres Precyzja Rozmiar
platforma ± 1.5 x 10–45 do ± 3.4 x 1038 ~ 6-9 cyfr 4 bajty [32 bity]
podwójnie ± 5.0 × 10–324 do ± 1.7 × 10308 ~ 15-17 cyfr 8 bajtów [64 bity]
dziesiętny ± 1.0 x 10-28 do ± 7.9228 x 1028 28-29 cyfr 16 bajtów [128 bitów]

Domyślnie każdy z tych trzech pływających punktów ma wartości równe zero. Każdy z nich ma minimalną i maksymalną wartość.

Korzystanie z danych zmiennoprzecinkowych w C#

Aby zadeklarować zmienną pływową, możesz użyć następującej składni:

Float myFloat = 3.14f;

Zauważ, że musisz dodać sufiks F do wartości, aby wskazać, że jest to pływak.

Aby zadeklarować podwójną zmienną, możesz użyć następującej składni:

Double MyDouble = 3.14;

Domyślnie literały zmiennoprzecinkowe w C# są traktowane jako podwójne. Jeśli chcesz użyć literału pływaka, możesz dodać sufiks F do wartości.

Aby zadeklarować literały dziesiętne, używamy sufiks M lub M:

dziesiętne mydecimal = 3.14m;

Zrozumienie problemów precyzyjnych o zmiennym punkcie

Precyzja liczb zmiennoprzecinkowych w C# jest ograniczona liczbą bitów używanych do przedstawienia liczby. Na przykład liczba zmiennoprzecinkowa (Float) używa 32 bitów do przedstawienia liczby, podczas gdy liczba zmiennoprzecinkowa (podwójna) używa 64 bitów.

Jedną konsekwencją tej ograniczonej precyzji jest to, że nie wszystkie wartości dziesiętne mogą być reprezentowane dokładnie za pomocą liczb zmiennoprzecinkowych. Na przykład wartość 0.1 nie można zadeklarować za pomocą liczb zmiennoprzecinkowych. Może to prowadzić do nieoczekiwanego zachowania podczas wykonywania operacji arytmetycznych.

Innym problemem jest to, że niektóre operacje mogą wprowadzić błędy zaokrąglenia. Na przykład dodanie dwóch bardzo małych liczb razem może spowodować utratę precyzji. Podobnie odejmowanie dwóch bardzo dużych liczb może również spowodować utratę precyzji.

Na przykład rozważ następujący kod:

Double Num1 = 0.1;
Double Num2 = 0.2;
podwójny wynik = num1 + num2;

Możesz oczekiwać, że wartość wyniku wynosi 0.3, ale ze względu na sposób przechowywania danych zmiennoprzecinkowych, rzeczywistą wartość wyniku będzie nieco inna (w tym przypadku będzie to około 0.30000000000000004). Takie wyniki mogą zmienić dane wyjściowe i mogą powodować nieoczekiwane zachowanie w programie, dlatego ważne jest, aby pamiętać o tych precyzyjnych problemach.

Aby rozwiązać te problemy, typy danych dziesiętnych mogą być preferowane w stosunku do float i podwójnie. Dziesiętne ma wyższą precyzję niż podwójna i jest lepsza do reprezentowania wartości, które wymagają wysokiego stopnia dokładności.

Wniosek

Liczby danych zmiennoprzecinkowych mogą przechowywać liczby z inną precyzją. Trzy główne typy obejmują pływak, podwójny i dziesiętny. Spośród wszystkich dziesiętne ma najwyższą precyzję. Korzystając z tych typów zmiennoprzecinkowych w C#, można łatwo reprezentować liczby dziesiętne. Szczegółowy opis tych trzech typów przeczytaj artykuł.