c bagaimana menukar int ke apungan


Jawapan 1:

Pertama, jika bahagian bukan pecahan pelampung dapat ditunjukkan sebagai int, penukaran tersirat yang "berpusing ke arah sifar" (iaitu, menjatuhkan pecahan) wujud:

int r (apungan f) { hasil int = f;hasil pulangan; // Anda hanya boleh menulis "return f;" sebaliknya.}

Perhatikan bahawa jika int tidak dapat mewakili hasilnya, "tingkah laku tidak ditentukan" (yang bermaksud program anda dibenarkan untuk melakukan apa-apa sejauh yang berkenaan).

Sekiranya itu bukan pembundaran yang anda mahukan, terdapat sebilangan fungsi pustaka standard yang dinyatakan dalam yang boleh melakukan muslihat. Pertama yang lebih sederhana:

  • siling / lantai masing-masing membulatkan ke atas atau ke bawah. Hasilnya masih terapung, anda boleh menggunakan penukaran tersirat yang dijelaskan di atas untuk mendapatkan int.
  • roundf, yang membulatkan nilai integer terdekat, kecuali bahawa casing .5 dibundarkan dari sifar (jadi 1.5F dibundarkan ke 2.0F, tetapi -3.5F dibundarkan ke -4.0F).
  • lroundf dan llroundf, yang serupa dengan roundf, tetapi masing-masing menghasilkan hasil yang panjang atau panjang. Sekiranya hasil teoritis tidak dapat diwakili oleh jenis hasil, hasil sebenarnya tidak ditentukan (iaitu, itu boleh menjadi nilai "apa pun" jenis itu). errno boleh ditetapkan ke EDOM atau ERANGE.
  • truncf, yang serupa dengan penukaran tersirat yang dijelaskan di atas, kecuali hasilnya masih terapung.

Terdapat fungsi pembundaran tambahan (juga dalam ) yang tingkah laku pembulatannya ditentukan oleh "arah pembulatan semasa" yang ditentukan oleh panggilan ke fesetround (fungsi yang dinyatakan dalam , tajuk yang berurusan dengan pelbagai tetapan di "lingkungan titik terapung"). Argumen untuk fungsi ini mestilah nilai salah satu makro standard FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, atau FE_UPWARD, tetapi mana-mana makro tersebut mungkin tidak ditentukan jika mod pembundaran yang sesuai tidak tersedia. Anda boleh mendapatkan mod pembundaran semasa dengan fegetround (). Fungsi yang mengambil kira adalah:

  • nearbyintf dan rintf, yang seperti roundf kecuali bahawa kes .5 mengikuti arah pembundaran semasa (dan rintf boleh menimbulkan pengecualian titik apungan yang menunjukkan hasil "tidak tepat").
  • lrintf dan llrintf, yang serupa dengan intint berdekatan, tetapi masing-masing menghasilkan hasil yang panjang atau panjang. Sekiranya hasil teoritis tidak dapat diwakili oleh jenis hasil, hasil sebenarnya tidak ditentukan (iaitu, itu boleh menjadi nilai "apa pun" dari jenis itu). errno boleh ditetapkan ke EDOM atau ERANGE.

Jawapan 2:

Cara paling mudah ialah int x = (int) (f + 0.5); Ini berfungsi selalunya untuk nombor positif. untuk nombor negatif anda boleh tolak 0,5. atau

Tentukan fungsi nilai mutlak dan fungsi bulat:

#tentukan ABS (X) ((X> = 0)? X: - (x))#def ROUND (X) (X> = 0)? (int) (X + 0.5): (int) - (ABS (X) +0.5)int x = ROUND (f);

Algoritma

Kaedah algoritma untuk membulatkan matematik adalah: 1. Tentukan berapa tempat perpuluhan yang boleh diambil sebagai signifikan (n) 2. Bahagikan nombor dengan 10 ^ {- n}. (m) 3. Ambil hasil nombor bulat terdekat. (pelampung bulat ke tempat 1). (q) 4. Darabkan m * q untuk mendapatkan nombor bulat. (z) 5. ubah menjadi integer: Jika bahagian pecahan adalah> 0,5, potong bahagian pecahan dan tambahkan 1. yang lain memotong bahagian pecahan.

Mengapa ini? Oleh kerana default untuk C adalah membundarkan bahagian pecahan, tidak kira seberapa dekat dengan 1. Oleh itu, anda harus membahagikan nombor dengan jumlah yang kecil untuk mengambil kira digit penting. dengan membulatkan hasil perantaraan anda akan mengatasi kesalahan pembundaran.

Umumnya untuk: nombor positif: jika nombor di sebelah kanan perpuluhan (tempat kesepuluh) adalah> = 5 bulat ke digit yang lebih tinggi berikutnya, jika tidak, terpotong. nombor negatif: jika nombor di sebelah kanan perpuluhan (tempat kesepuluh) adalah <= 5 terpotong, jika tidak, bulatkan ke bawah ke digit negatif seterusnya. Ini menangani kes tepi tepat .5 positif atau negatif.

/ * contoh, baik dan buruk * /int x;apungan f, m, n, p, z; // baik f = -13.486;n = .01; // dua tempatm = f / n; // m = -1348.6m = siling (m); // m = -1348.0z = m / n; // z = -13.48x = (int) z; // x = -13// baikf = 0.501; n = 0.1; // satu tempatm = f / n; // m = 5.01m = siling (m); // m = 6.0z = m / n; // z = .6x = (int) z; // x = 1// teruk f = 13.486;n = siling (f); // n = 14.000// terukf = -13.486;n = lantaif (f); // n = -14.000// buruk kerana tidak konsistenf = 0.50; n = siling (f); // n = 1.0n = lantaif (f); // n = 0.0f = -0.50; n = siling (f); // n = 0.0n = lantaif (f); // n = -1.0// masih tidak baik f = 0.50;n = 0.1; // 1 tempatm = f / n; // m = 5.0m = siling (m); // m = 5.0z = m / n; // z = 0.5x = (int) z; // x = 0 tidak begitu baik// cuba pusingan f = 0.5;m = pusingan (f); // m = 1.0p = pusingan (-f) // m = -1.0f = -0.5;m = pusingan (f); // m = -1.0p = pusingan (-f) // m = 1.0

Jawapan 3:

Anda boleh melakukannya dengan menggunakan pemutus jenis. Sintaksnya ialah-

Contoh:

apungan x;

x = 3.14;

int y;

y = (int) x;

printf (“% d”, y);

Pengeluaran:

3

Apa yang sebenarnya berlaku? Saya akan menerangkannya dengan mengambil analogi terkenal.

Fikirkan baldi yang penuh dengan air. Sekarang andaikan anda mempunyai cawan. Berapakah air maksimum yang boleh anda keluarkan dari baldi? Jawapan- Sebiji cawan.

Di sini baldi terapung (4 bait), dan cawan itu int (2 bait). Casting jenis adalah proses pengisian, dan air (data) hilang semasa melakukannya.

Semoga ini dapat membantu;)


Jawapan 4:

Sebilangan nombor apungan tidak boleh ditukar menjadi bilangan bulat. tetapi bilangan bulat dapat diubah menjadi apungan dengan menggunakan formatnya

penentu.As

ditunjukkan dalam contoh di bawah ini float boleh diteruskan ke pemboleh ubah jenis integer. setelah nilai diteruskan ke pemboleh ubah integer ia ditukar menjadi nilai apungan

#sertakan

nombor kosong (int e)

{

printf ("% d", e);

}

int utama ()

{

apungan c = 9.0000;

angka (c);

}

dalam contoh di atas kami telah menyampaikan nilai apungan ke pemboleh ubah integer. output program di atas akan menjadi 9.


Jawapan 5:

Terdapat beberapa pendekatan untuk pembundaran. Lihat fungsi perpustakaan ini, yang telah tersedia sejak C99:

  • roundf, yang mengembalikan float yang merupakan nilai integral yang terdekat dengan argumen, dengan separuh kes dibundarkan dari sifar.
  • floorf, yang membulatkan ke bawah, mengembalikan nilai kamiran terbesar yang tidak lebih besar daripada argumen.
  • ceilf, yang membulatkan ke atas, mengembalikan nilai kamiran terkecil yang tidak kurang daripada argumen.
  • nearbyintf, yang membulatkan nilai integral, menggunakan arah pembundaran yang ditentukan oleh fegetround (yang mengembalikan nilai yang menunjukkan mod arah pembulatan, seperti yang ditentukan dalam persekitaran titik terapung semasa.)

Setiap fungsi ini menerima argumen float, dan mengembalikan hasil float, yang kemudian anda boleh lancarkan ke int.


Jawapan 6:

Fungsi pusingan () dalam math.h akan berfungsi. Perkara berikut harus disusun dan berfungsi dengan baik (walaupun saya tidak menyusunnya):

#sertakan / * Import prototaip untuk pusingan () dari math.h * pusingan berganda (berganda); * /#sertakan int utama () { apungan i = 5.4, j = 5.6; / * Setiap perkara berikut secara tidak langsung melambangkan pelampung menjadi dua kali ganda * untuk parameter dan kemudian hasil berganda dapat selamat* dilancarkan ke int tanpa kehilangan ketepatan. Sudah tentu, anda * mungkin ingin menggunakan lama bukan int tapi itu bergantung * pada jangkaan jangkaan anda. * /int ii = (int) bulat (i); / * Nama pembolehubah yang mengerikan tetapi itu hanyalah contoh. * / int jj = (int) bulat (j);/ * Sekarang cetak nilai. * / printf ("pusingan% f adalah% f yang juga% d \ n", i, bulat (i), ii); printf ("pusingan% f adalah% f yang juga% d \ n", j, bulat (j), jj); pulangan 0;}

Contoh diubah suai dari:

Fungsi C - bulat ()

.


Jawapan 7:

Untuk menukar nombor apungan menjadi nombor bulat, anda harus menggunakan pemutus jenis (Penaipan Jenis, atau penukaran jenis, adalah kaedah mengubah entiti dari satu jenis data ke jenis data yang lain).

#sertakan kekosongan utama () { float var1 = 3.141592653589793238; int var2;var2 = (int) var1; // typecasting (menukar float menjadi integer) printf ("Nilai integer:% d", var2);}

Pengeluaran


Jawapan 8:

Jawapan: (int)

Anda hanya boleh menggunakan cast (int) untuk menukar float menjadi integer.

Seperti ini

_variabiliti anda = (int) pemboleh ubah_anda

Apa fungsi (int)?

Ini memberitahu penyusun bahawa anda ingin memperlakukan nilai yang dikembalikan oleh malloc sebagai penunjuk kepada bilangan bulat.


Jawapan 9:
apungan a = 2.33;int b = (int) a;printf ("% d", b);

Hasilnya adalah: 2


Jawapan 10:

Pemutus Jenis automatik berlaku apabila,

  • kedua-dua jenis itu serasi
  • jenis sasaran lebih besar daripada jenis sumber

Contoh:

Ujian kelas awam{ utama kekosongan statik awam (String [] args) { int i = 100; panjang l = i; // tidak diperlukan pemutus jenis eksplisitapungan f = l; // tidak diperlukan pemutus jenis eksplisit System.out.println ("Nilai int" + i); System.out.println ("Nilai panjang" + l); System.out.println ("Nilai apungan" + f); } }

Pengeluaran :

Nilai int 100Nilai panjang 100Nilai apungan 100.0

Jawapan 11:

Anda dapat menggunakan 2 fungsi, "lantai ()" dan "langit-langit ()" untuk mengubah nilai apungan menjadi bilangan bulat. Contoh: -

apungan a = 3.5;

int b = tingkat (a); // ini akan menetapkan "b" menjadi 3

int b = siling (a); // ini akan menetapkan "b" menjadi 4