Ondalıklı sayılar
- Rust kursu
- Başlangıç
- Ders 14/115
- 4 dk
f32 ve f64 ondalık türlerini öğrenirsin.
Ondalıklı sayılar
Rust'ta iki ondalık tür vardır: f32 (tek hassasiyet) ve f64 (çift hassasiyet, varsayılan). Modern işlemcilerde f64 neredeyse aynı hızdadır ve daha hassastır.
let pi = 3.14159; // f64
let yaricap: f32 = 2.0;
let alan = pi * 2.0 * 2.0;
println!("{:.2}", alan); // 12.57Tam sayı ile ondalık doğrudan karıştırılamaz: 2 * 1.5 derlenir (sabit) ama n * 1.5 (n: i32) için n as f64 * 1.5 gerekir.
Ondalık karşılaştırma
Ondalıklar ikili tabanda tutulduğu için 0.1 + 0.2 == 0.3 false verir. Karşılaştırma bir tolerans ile yapılır:
let a = 0.1 + 0.2;
println!("{}", a == 0.3); // false
println!("{}", (a - 0.3).abs() < 1e-10); // truef64::NAN kendisine bile eşit değildir; bu yüzden ondalıklar Eq ve Ord'u uygulamaz, sıralamak için total_cmp kullanılır.
Uygulama Daire alanı
let r: i32 = 3; tanımla. Alanı std::f64::consts::PI * (r as f64).powi(2) ile hesapla ve {:.2} ile yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn main() {
let r: i32 = 3;
let alan = std::f64::consts::PI * (r as f64).powi(2);
println!("{:.2}", alan);
}Beklenen çıktı
28.27
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>let n: i32 = 3; let x = n * 1.5;</code> neden derlenmez?
- i32 ile f64 çarpılamaz; n as f64 gerekir Doğru cevap
- 1.5 geçersiz
- n değiştirilemez
- Derlenir
Açıklama: Rust farklı sayı türleri arasında örtük dönüşüm yapmaz; as ile açık dönüşüm yazılır.
2 Tür dönüşümü
let adet: i32 = 4;
let toplam = adet ____ f64 * 2.5;
let adet: i32 = 4;
let toplam = adet as f64 * 2.5;
Açıklama: as anahtar kelimesi sayısal türler arasında açık dönüşüm yapar.
3 İfade ve sonuç
| Kavram | Anlamı |
|---|---|
7.0 / 2.0 |
3.5 |
7 / 2 |
3 (tam sayı) |
0.1 + 0.2 == 0.3 |
false |
2.0_f64.sqrt() |
1.414... |