C ++ pludiņš un dubultā

Šajā apmācībā mēs uzzināsim par pludiņa un dubulto datu tipiem, izmantojot piemērus. Mēs arī aplūkosim dažas galvenās atšķirības starp tām un kad tās izmantot.

C ++, gan floatun doubledatu tipi tiek izmantoti peldošā punktu vērtībām. Peldošā komata skaitļus izmanto decimāldaļām un eksponenciālām vērtībām. Piemēram,

 // creating float type variables float num1 = 3.0f; float num2 = 3.5f; float num3 = 3E-5f; // 3x10^-5 // creating double type variables double num4 = 3.0; double num5 = 3.5; double num6 = 3E-5; // 3x10^-5

Mums jāpievieno sufikss fvai vērtības Fbeigās float. Tas notiek tāpēc, ka kompilators decimālvērtības bez sufiksa interpretē kā double.

Apsveriet šo kodu.

 float a = 5.6;

Šeit mēs esam piešķīruši mainīgajam doublevērtību float.

Šajā gadījumā kompilators automātiski pārvērš 5.6,float pirms tas tiek piešķirts mainīgajam a. Tas var izraisīt datu zudumu. Lai uzzinātu vairāk, apmeklējiet C ++ tipa pārveidošanu.

Starpība starp pludiņu un dubulto

peldēt dubultā
Izmērs: 4 baiti Izmērs: 8 baiti
Precizitāte: Parasti precizitāte ir 7 cipari aiz komata Precizitāte: Parasti precizitāte ir 15 zīmes aiz komata
Piemērs: 3.56f , 3e5fuc Piemērs: 3.56 , 3e5uc

Piezīme. Ja vien jums nav konkrētu prasību, vienmēr izmantojiet doublenevis float, jo floatmainīgie var būt pakļauti kļūdām, strādājot ar lielu skaitu.

1. piemērs: C ++ pludiņš un dubultā

 #include #include using namespace std; int main() ( // Creating a double type variable double a = 3.912348239293; // Creating a float type variable float b = 3.912348239293f; // Printing the two variables cout << "Double Type Number = " << a << endl; cout << "Float Type Number = " << b << endl; return 0; )

Rezultāts

 Dubultā tipa numurs = 3,91235 Peldošā tipa numurs = 3,91235

Piezīme. Šajā piemērā izmantotais kompilators (MinGW kompilators) atļāva 6 ciparus. Tātad kompilators noapaļoja un mainīja mūsu mainīgās vērtības līdz 6 cipariem.

setprecision (), lai norādītu decimālzīmes

Mēs varam norādīt skaitu aiz punktiem drukāt cout, izmantojot setprecision()funkciju.

Šī funkcija ir definēta iomanipgalvenes failā, kas nozīmē ieejas / izvades manipulācijas .

2. piemērs: Setprecision () izmantošana peldošā komata numuriem

 #include #include using namespace std; int main() ( // Creating a double type variable double a = 3.912348239293; // Creating a float type variable float b = 3.912348239293f; // Setting the precision to 12 decimal places cout << setprecision(13); // Printing the two variables cout << "Double Type Number = " << a << endl; cout << "Float Type Number = " << b << endl; return 0; )

Rezultāts

 Dubultā tipa numurs = 3,912348239293 Pludiņa tipa numurs = 3,912348270416

Kā redzams no iepriekš minētā piemēra, mēs esam norādījuši precizitāti līdz 13 cipariem.

 cout << setprecision(13);

Peldošā komata vērtība, ko esam piešķīruši saviem mainīgajiem, sastāv arī no 13 cipariem.

floatkā precizitāte ir tikai līdz 7 cipariem, pēc precizitātes pārsniegšanas tā parāda atkritumu vērtības .

Mūsu doublemainīgais parāda pareizo skaitli, jo tā precizitāte ir 15 cipari, bet pats skaitlis sastāv no 13 cipariem.

Kā alternatīvu mēs varam norādīt atšķirīgu precizitāti dažādiem mainīgajiem lielumiem, tos drukājot.

3. piemērs: Dažādu mainīgo precizitāte

 #include #include using namespace std; int main() ( // Creating a double type variable double a = 3.912348239293; // Creating a float type variable float b = 3.912348239293f; // Setting precision to 11 for double cout << "Double Type Number = " << setprecision(11) << a << endl; // Setting precision to 7 for float cout << "Float Type Number = " << setprecision(7) << b << endl; return 0; )

Rezultāts

 Dubultā tipa numurs = 3,9123482393 Peldošā tipa numurs = 3,912348

No iepriekš minētās programmas mēs varam redzēt, ka esam iestatījuši divas dažādas precizitātes vērtības floatun double.

Abos gadījumos precizitāte ir mazāka par faktiskajiem skaitļa cipariem. Tātad pēdējais cipars ir noapaļots, bet pārējais tiek saīsināts.

Piezīme: Ja mēs norādām precizitāti, kas ir lielāka par paša datu veida precizitāti (7 par floatun 15 par double), tad pēc precizitātes ierobežojuma pārsniegšanas kompilators mums sniegs atkritumu vērtības, kā redzams ar float2. piemēra izvadi .

Darbs ar eksponenciālajiem numuriem

Kā minēts iepriekš, floatun to doublevar izmantot arī eksponenciālo skaitļu attēlošanai . Piemēram,

 // ex = 325 X (10 25) double ex = 325E25;

C ++ izved eksponenciālos skaitļus un ļoti lielus skaitļus formātā, ko sauc par zinātnisko formātu. Mainīgais lielums ex pēc noklusējuma tiks parādīts šajā formātā, jo tas ir ļoti liels skaitlis.

Lai piespiestu C ++ mūsu peldošā komata numurus parādīt scientificformātā neatkarīgi no skaitļa lieluma, mēs scientificiekšpusē izmantojam formāta specifikatoru cout.

 double num = 3.25; // ex = 325 X (10 25) double ex = 325E25; // using scientific format cout << scientific << num; cout << scientific << ex;

Papildus tam ir vēl viens formāta norādītājs, kas pazīstams kā fixedpeldošā komata skaitļi decimāldaļā.

Tas ir līdzīgs peldošo punktu skaitļu parādīšanai, izmantojot tikai coutbez setprecision(), izņemot to, ka fixedtiek rādīti skaitļi līdz 6 zīmēm aiz komata.

No otras puses, tikai izmantojot coutdispleja ciparus atbilstoši konkrētajam kompilatoram (6 kopējie cipari MinGW kompilatora gadījumā , ieskaitot ciparus pirms komata).

4. piemērs: Fiksētie un zinātniskie formāti

 #include #include using namespace std; int main() ( // Creating a decimal double type variable double a = 3.912348239293; // Creating an exponential double type variable double ex1 = 325e+2; // Creating a float type variable float b = 3.912348239293f; // Creating an exponential float type variable float ex2 = 325e+2f; // Displaying output with fixed cout << "Displaying Output With fixed:" << endl; cout << "Double Type Number 1 = " << fixed << a << endl; cout << "Double Type Number 2 = " << fixed << ex1 << endl; cout << "Float Type Number 1 = " << fixed << b << endl; cout << "Float Type Number 2 = " << fixed << ex2 << endl; // Displaying output with scientific cout << "Displaying Output With scientific:" << endl; cout << "Double Type Number 1 = " << scientific << a << endl; cout << "Double Type Number 2 = " << scientific << ex1 << endl; cout << "Float Type Number 1 = " << scientific << b << endl; cout << "Float Type Number 2 = " << scientific << ex2 << endl; return 0; )

Rezultāts

 Displaying Output With fixed: Double Type Number 1 = 3.912348 Double Type Number 2 = 32500.000000 Float Type Number 1 = 3.912348 Float Type Number 2 = 32500.000000 Displaying Output With scientific: Double Type Number 1 = 3.912348e+000 Double Type Number 2 = 3.250000e+004 Float Type Number 1 = 3.912348e+000 Float Type Number 2 = 3.250000e+004

long double

Apart from float and double, there is another data type that can store floating-point numbers. This is known as long double.

It usually occupies a space of 12 bytes (depends on the computer system in use), and its precision is at least the same as double, though most of the time, it is greater than that of double.

long double values should end with L. For example,

 // declaring a long double variable long double num_ldb = 2.569L;

Piezīme: Ar peldošā komata datu tipi atbalstītie C ++, ir float, doubleun long double. Nav long float.

Interesanti raksti...