Kasr sonlar farqlari
Tags: float, double, decimal
Published: 2024-04-13 07:04:17

C# da Kasr sonlar ustida amallar bajarish uchun 3 ta data type mavjud bular float, double , decimal.
bular nimasi bilan bir biridan farqlanadi😒.
float < double < decimal 
kabi tushunsak bo'ladi 😂. Data Type lar Stack xotirasida saqlanadi gap float, double, decimal haqida ketmoqda boshqa data type emas.😎
Bularni asosiy farqi nomida 3 xil nom yani float, double, decimal 🥶
albatda bu xazil lekin rostan ham nomi har xil unda ketdik asosiy farqlarini va boshqa xususiyatlarini sanaymiz.

.-> .(nuqta) dan keyin aniqlilik kasr qisimni hisoblashdagi aniqlilik, sonni butun qismidan keyingi qoldiqni hisoblash dib tushunsak bo'ladi. Masalan 2.7178238148129410931371473141920 menshu son ustida farqlarni tushuntirib beraman 2 bu butun qismi yani faqat bizga 2 kerak bulgan da buni integer data type ga saqlasak  bo'lar edi afsuski bizga . (nuqtadan keyin) malum bir xona aniqlikda  natija kerak bulsa bizni xizmatga float, double, decimal keladi.

#1--> float aniqlilik kursatkichi . dan keyin 6~9 tagacha sonni aniq ko'rsatadi hisoblash jarayonida.
bu DataTypelarni maksimal, minimal va default qiymatlari bor shu sonlardan oshmasligi kerak bizni hisob kitoblarimiz agar oshib ketsa xatoliklar kupayadi bu xatolik ham ikki xil bo'ladi.
//Max
Console.WriteLine(float.MaxValue);
Maksimal qiymati:3.402823E+38
//Min
Console.WriteLine(float.MinValue);
Minimal qiymati:-3.402823E+38
//Default
float number1Default = default;
Console.WriteLine(number1Default);
Default qiymati: 0;

Xotiradan 4 Bytes joy egallaydi😁.

#2--> double aniqlilik kursatkichi . dan keyin 15~17 tagacha sonni aniq ko'rsatadi hisoblash jarayonida.

//Max
Console.WriteLine(double.MaxValue);
Maksimal qiymati:1.79769313486232E+308
//Min
Console.WriteLine(double.MinValue);
Minimal qiymati:-1.79769313486232E+308
//Default
double number1Default = default;
Console.WriteLine(number1Default);
Default qiymati: 0; 

Xotiradan 8 Bytes joy egallaydi😁.

#3--> decimal aniqlilik kursatkichi . dan keyin 28~29 tagacha sonni aniq ko'rsatadi hisoblash jarayonida. 

//Max
Console.WriteLine(decimal.MaxValue);
Maksimal qiymati: 79228162514264337593543950335
//Min
Console.WriteLine(decimal.MinValue);
Minimal qiymati:-79228162514264337593543950335
//Default
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mwo1sg2o0x74jv9vgxhy.jpg)
decimal number1Default = default;
Console.WriteLine(number1Default);
Default qiymati: 0;

Xotiradan 16 Bytes joy egallaydi😁.

--------1-> data type saqlash chegarasidan chiqib ketsa kompilyator xatoni kursatadi .
---------2-> .(nuqtadan) keyin aniqlikni oshirib yuborsak xatolik kursatmaydi runtime da ham kompile timeda  ham. shunchaki natijada aniqlilik yuqoladi va xato raqamlar chop etiladi.

----------------#### Qiziqarli malumot ####-------------------------

misol uchun:
float num1 = 12.321322342433543636f; --->f harfi float dan olingan
double num2 = 13.1341424123124325d; ---> d harfi double dan olingan
decimal num3 = 21.2341324325235345346m; --> m harfi money dan olingan pulga bog'liq jarayonlarda qurqmasdan decimal ishlating🤩.

---- xona birliklarni aniqligiga misollar 
//Float
float number1 = 112.311313131398582372121212312f;
//Double
double number2 = 112.311313131313494121295752612121212d;
//Decimal
decimal number3 = 112.31131313131312931249572312121212312m;

Console.WriteLine($"float: {number1:F10}");
Console.WriteLine($"double: {number2:F20}");
Console.WriteLine($"decimal: {number3:F30}");
----------------------------------------
Console oynasidagi natija:->

float: 112.3113000000
double: 112.31131313131300000000
decimal: 112.311313131313129312495723120000

:F10, :F20, :F30 nima ekanligi qiziq bo'lsa bu Standard numeric format strings -> https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings
shu linkda to'liq yozilgan.

Diqqat savol:
1.Double va double ni qanday farqi bor (katta kichik d harfida yozilgan)?
2.Decimal va decimal ni qanday farqi bor (katta kichik d harfida yozilgan)?
float o'zi float , float xullas Leginda😎.