>> DAVID J. Malan: Seperti Anda mungkin tahu, Suhu diukur dengan menggunakan
skala yang berbeda di berbagai belahan dunia.
Misalnya, 212 derajat Fahrenheit adalah 100 derajat Celcius dan 32 derajat
Fahrenheit adalah 0 derajat Celcius.
Bukankah lebih baik jika kita memiliki komputer Program yang memungkinkan kita untuk
mengkonversi dari, katakanlah, Fahrenheit ke Celsius?
>> Nah, kita dapat menulis program itu.
Mari kita mulai dengan meliputi cs50.h, sehingga kita dapat menggunakan fungsi yang disebut
mendapatkan float, yang, seperti mendapatkan int, mendapat nomor dari pengguna, tapi kali ini
angka floating point - satu dengan titik desimal.
>> Mari kita juga termasuk io.h standar sehingga kita memiliki akses ke
fungsi seperti print f.
Dan mari kita juga mendeklarasikan main dengan cara yang biasa.
>> Mari kita selanjutnya meminta pengguna untuk suhu di Fahrenheit.
Mari kita sekarang benar-benar mendapatkan suhu yang dari pengguna, pertama dengan
mendeklarasikan variabel disebut f dari tipe float.
Sebuah float, sekali lagi, yang berarti variabel yang menyimpan nilai floating point,
satu dengan titik desimal.
>> Mari kita menetapkan pengembalian nilai get mengambang.
Dan kemudian mari kita lakukan sedikit aritmatika di atasnya, pertama menyatakan mengapung lain
disebut C Celcius dan simpan dalam C hasil dari beberapa aritmatika umum.
5.0 dibagi dengan 9,0 kali F dikurangi 32,0.
>> Sekarang mari kita mencetak hasil perhitungan ini.
persen f -
menandakan tempat untuk nilai pecahan -
koma C untuk mencetak suhu dalam Celcius.
Mari menghemat terakhir saya.
Kompilasi dengan F ke C. Jalankan program dengan dot slash F ke C.
>> Dan mari kita coba yang umum suhu.
212 derajat Fahrenheit di adalah 100 derajat Celcius.
32 derajat Fahrenheit di adalah 0 derajat Celcius di.
>> Sekarang mari kita memperbaiki program ini sedikit bit dengan tidak mencetak cukup banyak 0 s
setelah itu tempat desimal.
Untuk melakukan hal ini, saya akan kembali ke line 11.
Dan bukan hanya menentukan persen f, Aku akan sebaliknya menentukan, misalnya,
0,1 f, menginformasikan print f bahwa saya hanya ingin mencetak nilai floating point
satu nilai setelah tempat desimal.
>> Mari kita resave program saya.
Mengkompilasi ulang dengan make F ke C. Kemudian memutarkan lagi dengan dot slash F ke C. Dan
mari kita coba lagi dengan, katakanlah, 212, yang memberikan saya 100,0.
>> Sekarang perlu dicatat bahwa yang saya lakukan sesuatu yang sangat sengaja sejalan 9.
Perhatikan bagaimana saya menulis 5 adalah 5,0, 9 sebagai 9,0, dan bahkan 32 sebagai 32,0.
Nah, dua yang pertama dari nilai-nilai yang sangat sengaja dipilih untuk menjadi
nilai-nilai floating point, bukan hanya karena konsistensi dengan sisanya
dari program saya -
yang jelas melibatkan mengambang point nilai -
tetapi karena ternyata C itu, Jika Anda membagi int oleh int lain,
jawaban yang dihasilkan Anda akan dapatkan adalah sendiri merupakan int, bahkan jika itu berarti
harus membuang segala sesuatu setelah titik desimal.
>> Dengan kata lain, jika saya mengubah 5.0 ini untuk 5 atau ini 9,0-9 lalu simpan
program saya, mengkompilasi ulang dengan make F ke C, dan kemudian jalankan kembali dengan dot slash F
untuk C dan ketik input seperti 212, melihat bahwa jawaban saya akan
mendapatkan waktu ini sebenarnya sangat salah.
0.0 bukanlah gelar yang benar dalam Celsius sebagai 212 Fahrenheit.
>> Nah, apa yang terjadi?
Nah, sejalan 9, karena 5 sekarang merupakan integer dan karena 9 sekarang merupakan
integer, hasilnya matematis harus 0,5555 dan seterusnya.
Tetapi karena hasilnya, menurut Aturan C, harus menjadi int, yang
0,5555 akan dibuang, meninggalkan kami dengan hanya 0.
>> Jadi pada akhirnya, saya akhirnya mengalikan cukup sengaja 0 kali f dikurangi
32,0, yang tidak peduli apa selalu akan memberikan 0.
Jadi perlu diingat, setiap saat menggunakan nilai-nilai floating point dalam kedekatan
ints, Anda mungkin tidak selalu mendapatkan jawaban sehingga Anda harapkan.
Dan jadi berhati-hati untuk menggunakan, seperti yang saya lakukan di nilai kasus pertama, floating point
sepanjang untuk menghindari isu-isu tersebut.