c hvernig á að umbreyta int til að fljóta


svara 1:

Í fyrsta lagi, ef hlutfall flotans, sem ekki er brotlegur, er táknandi sem int, er óbein umbreyting sem „rúnast í átt að núlli“ (þ.e. lækkar brot):

int r (fljóta f) { int niðurstaða = f;skila niðurstöðu; // Þú gætir bara skrifað "skila f;" í staðinn.}

Athugaðu að ef int getur ekki táknað niðurstöðuna, „hegðun er óskilgreind“ (sem þýðir að forritið þitt hefur leyfi til að gera hvað sem er varðandi staðalinn).

Ef það er ekki sú námundun sem þú vilt, þá eru fjöldi staðlaðra bókasafnsaðgerða lýst yfir í það getur gert bragðið. Fyrst einfaldari:

  • loft / gólff hring upp eða niður, í sömu röð. Niðurstaðan er ennþá flot, þú getur notað óbeina viðskiptin sem lýst er hér að ofan til að fá int.
  • roundf, sem umferðir að næsta heiltölugildi, nema að .5 tilfellið er ávalið frá núlli (þannig að 1.5F er námundað í 2.0F, en -3.5F er ávalið í -4.0F).
  • lroundf og llroundf, sem eru svipuð roundf, en skila langri eða löngri langri niðurstöðu, hvort um sig. Ef fræðileg niðurstaða er ekki hægt að tákna með niðurstöðutegundinni er raunveruleg niðurstaða ótilgreind (þ.e. það gæti verið „hvað sem er“ gildi þeirrar gerðar). errno getur verið stillt á EDOM eða ERANGE.
  • truncf, sem er svipað og óbeina viðskiptin sem lýst er hér að ofan, nema að niðurstaðan er ennþá flot.

Það eru til viðbótar hringlaga aðgerðir (einnig í ) þar sem hringhegðun er ákvörðuð með „núverandi hringrásarstefnu“ sem er stofnað með kalli til jarðar (aðgerð lýst í , haus sem fjallar um ýmsar stillingar í „umhverfi flotpunkta“). Rökin fyrir þessari aðgerð verða að vera gildi eins af venjulegu fjölva FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO eða FE_UPWARD, en eitthvað af þessum fjölva gæti verið óskilgreint ef samsvarandi hringmyndunarstilling er ekki tiltæk. Þú getur sótt núverandi hringmyndunarstillingu með fegetround (). Aðgerðirnar sem taka tillit til þess eru:

  • nearbyintf og rintf, sem eru eins og roundf að öðru leyti en því að .5 málið fylgir núverandi námundunarstefnu (og rintf kann að vekja undantekningu á flotpunkti sem gefur til kynna „ónákvæma“ niðurstöðu).
  • lrintf og llrintf, sem eru svipuð og nearbyintf, en skila langri eða löngri langri niðurstöðu, í sömu röð. Ef fræðileg niðurstaða er ekki hægt að tákna með niðurstöðutegundinni er raunveruleg niðurstaða ótilgreind (þ.e. það gæti verið „hvað sem er“ gildi þeirrar gerðar). errno getur verið stillt á EDOM eða ERANGE.

svara 2:

Einfaldasta leiðin er int x = (int) (f + 0.5); Þetta virkar oftast fyrir jákvæðar tölur. fyrir neikvæðar tölur er hægt að draga 0,5 frá. eða

Skilgreindu algildi virka og hringfall:

# skilgreina ABS (X) ((X> = 0)? X: - (x))#def UMFERÐ (X) (X> = 0)? (int) (X + 0.5): (int) - (ABS (X) +0.5)int x = UMFERÐ (f);

Reiknirit

Reikniritaleiðin til að rúlla stærðfræðilega er: 1. Ákveðið hve marga aukastafi á að taka eins marktækan (n) 2. Deildu tölunni með 10 ^ {- n}. (m) 3. Taktu næstu heiltöluniðurstöðu. (kringlótt fljóta að 1 sæti). (q) 4. Margfaldaðu m * q til að fá ávalið númer. (z) 5. umreikna í heiltölu: Ef brothlutinn er> 0,5, styttu brothlutann og bætið 1. annars styttu brothlutann.

Af hverju að gera þetta? Vegna þess að sjálfgefið fyrir C er að ná niður hluta hlutans, sama hversu nálægt hann er 1. Þannig að þú verður að deila tölunni í örlítið magn til að taka tillit til marktækra tölustafa. með því að samræma milliniðurstöðuna munðu sjá um villur í umferð.

Almennt fyrir: jákvæðar tölur: ef talan til hægri við aukastafinn (tíunda sætið) er> = 5 umferð upp að næsta hærri tölustaf, annars stytt. neikvæðar tölur: ef talan til hægri við aukastafinn (tíunda sætið) er <= 5 stytt, annars hringið niður í næsta neikvæða tölustaf. Þetta sér um brúnmál nákvæmlega .5 jákvætt eða neikvætt.

/ * dæmi, góð og slæm * /int x;fljóta f, m, n, p, z; // góður f = -13,486;n = .01; // tveir staðirm = f / n; // m = -1348.6m = þak (m); // m = -1348.0z = m / n; // z = -13,48x = (int) z; // x = -13// góðurf = 0,501; n = 0,1; // einn staðm = f / n; // m = 5,01m = þak (m); // m = 6,0z = m / n; // z = .6x = (int) z; // x = 1// slæmt f = 13.486;n = þak (f); // n = 14.000// slæmtf = -13,486;n = gólff (f); // n = -14.000// slæmt vegna ósamræmisf = 0,50; n = þak (f); // n = 1.0n = gólff (f); // n = 0,0f = -0,50; n = þak (f); // n = 0,0n = gólff (f); // n = -1,0// samt ekki gott f = 0,50;n = 0,1; // 1 sætim = f / n; // m = 5,0m = þak (m); // m = 5,0z = m / n; // z = 0,5x = (int) z; // x = 0 ekki svo gott// prófaðu roundf f = 0,5;m = roundf (f); // m = 1.0p = roundf (-f) // m = -1.0f = -0,5;m = roundf (f); // m = -1,0p = roundf (-f) // m = 1.0

svara 3:

Þú getur gert það með því að nota gerð steypu. Setningafræðin er-

Dæmi:

fljóta x;

x = 3,14;

int y;

y = (int) x;

prentf („% d“, y);

Framleiðsla:

3

Hvað gerðist eiginlega? Ég skal útskýra það með því að taka fræga hliðstæðu.

Hugsaðu um fötu alveg fyllt með vatni. Segjum nú að þú sért með mál. Hvert er mesta vatnið sem þú getur tekið úr fötunni? Svar- Krús.

Hér er fötan fljótandi (4 bæti) og málin int (2 bæti). Tegunda steypa er ferlið við að fylla og vatn (gögn) tapast á meðan það er gert.

Vona að þetta hjálpi;)


svara 4:

Ekki er hægt að breyta hvaða flotnúmer sem er í heiltölu. en heiltölu er hægt að breyta í flot með því að nota snið þess

tilgreindur.As

sýnt í dæminu hér að neðan er hægt að senda flot í heiltölubreytu. Eftir að gildi er sent í heiltölu breytu er það breytt í flotgildi.

# innifalið

ógilt númer (int e)

{

prentf ("% d", e);

}

aðal aðal ()

{

fljóta c = 9.0000;

num (c);

}

í dæminu hér að ofan höfum við fært flotgildi yfir í heiltölubreytu. framleiðsla ofangreinds forrits verður 9.


svara 5:

Það eru nokkrar leiðir til að ná saman. Kíktu á þessar bókasafnsaðgerðir sem hafa verið í boði síðan C99:

  • roundf, sem skilar floti sem er heildargildið næst rökunum, með hálfum tilvikum ávalið frá núlli.
  • floorf, sem rúnar niður, skilar stærsta heildargildinu sem er ekki meira en rökin.
  • þak, sem rúnar upp og skilar minnsta heildargildinu sem er ekki minna en rökin.
  • nearbyintf, sem rúnar að heildstæðu gildi, með því að nota námundunarstefnuna sem tilgreind er með fegetround (sem skilar gildi sem gefur til kynna stefnuna fyrir umferð, eins og tilgreint er í núverandi umhverfi flotpunkta.)

Hver af þessum aðgerðum fær flotröksemd og skilar flotniðurstöðu sem þú getur síðan varpað til int.


svara 6:

Round () aðgerðin í stærðfræði.h mun virka. Eftirfarandi ætti að taka saman og virka ágætlega (þó að ég hafi ekki tekið það saman):

# innifalið / * Flytja inn frumgerðina fyrir round () frá stærðfræði.h * tvöföld umferð (tvöföld); * /# innifalið int aðal () { fljóta i = 5,4, j = 5,6; / * Hvert eftirtalinna varpar óbeint flotinu til að tvöfaldast * fyrir breytuna og þá getur tvöfalda niðurstaðan verið örugglega* kastað til int án nákvæmnistaps. Auðvitað, þú * gæti viljað nota lengi í stað int en það fer eftir * á áætluðu sviðinu. * /int ii = (int) umferð (i); / * Skelfileg breytuheiti en það er bara dæmi. * / int jj = (int) umferð (j);/ * Prentaðu nú út gildin. * / printf ("umferð af% f er% f sem er einnig% d \ n", i, umferð (i), ii); printf ("umferð af% f er% f sem er einnig% d \ n", j, umferð (j), jj); skila 0;}

Dæmi er breytt úr:

C - umferð () virka

.


svara 7:

Til að breyta flotnúmeri í heiltölu verður þú að nota gerð steypu (Typecasting, eða gerð umbreyting, er aðferð til að breyta einingu úr einni gagnategund í aðra).

# innifalið ógilt aðal () { fljóta var1 = 3.141592653589793238; int var2;var2 = (int) var1; // typecasting (umbreyta floti í heiltölu) printf ("Heildar gildi:% d", var2);}

Framleiðsla


svara 8:

Svar: (int)

Þú getur einfaldlega notað cast (int) til að breyta floti í heiltölu.

Svona

þinn_variable = (int) þinn_variable

Hver er það hlutverk (int)?

Það segir þýðandanum að þú viljir meðhöndla gildið sem malloc skilar sem bendi á heiltölu.


svara 9:
fljóta a = 2,33;int b = (int) a;prentf („% d“, b);

Framleiðslan verður: 2


svara 10:

Sjálfvirk gerð steypa fer fram þegar,

  • þessar tvær gerðir eru samhæfðar
  • markgerðin er stærri en upprunategundin

Dæmi:

almennings bekkjarpróf{ opinber truflanir ógilt aðal (String [] rök) { int i = 100; langur l = i; // ekki er krafist afdráttarlausrar gerðarlistarfljóta f = l; // ekki er krafist afdráttarlausrar gerðarlistar System.out.println („Int gildi“ + i); System.out.println ("Langt gildi" + l); System.out.println („Flotgildi“ + f); } }

Framleiðsla:

Int gildi 100Langt gildi 100Flotgildi 100,0

svara 11:

Jæja, þú getur notað 2 aðgerðir, „hæð ()“ og „þak ()“ til að breyta flotgildi í heiltölu. Dæmi: -

fljóta a = 3,5;

int b = hæð (a); // þetta mun setja “b” á 3

int b = loft (a); // þetta mun setja “b” á 4