CodeBlanks Logo Icon CodeBlanks

Ondalıklı sayılar

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.57

Tam 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);    // true

f64::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

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
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ü

Soru
let adet: i32 = 4;
let toplam = adet ____ f64 * 2.5;
Cevap
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...

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma