Takip et

PowerShell: How to Format Numbers to 2 Decimal Places (Çeviri)

# PowerShell’de Sayıları Ondalıklı İki Basamağa Yuvarlama

Finansal raporlama, bilimsel hesaplamalar veya herhangi bir hassas veri işleme durumunda, sayıları belirli bir ondalık basamağa yuvarlamak hayati önem taşır. PowerShell’de, sayıları iki ondalık basamağa yuvarlamak için çeşitli yöntemler bulunmaktadır. Bu makale, yeni başlayanlardan ileri seviye kullanıcılara kadar herkes için adım adım bir rehber sunarak, PowerShell’de sayı biçimlendirmenin inceliklerini ele alacaktır. PowerShell’in sunduğu güçlü biçimlendirme özelliklerini kullanarak, verilerinizi doğru ve anlaşılır bir şekilde sunmayı öğreneceksiniz.

Öğrenme Yol Haritası

Bu makale, PowerShell’de sayıları iki ondalık basamağa yuvarlamayı öğrenmek için üç aşamalı bir yol haritası sunar:

Yeni Başlayan: Temel komutlar ve basit örneklerle başlar.

Orta Seviye: Gerçek dünya senaryoları ve optimizasyon ipuçlarıyla devam eder.

İleri Seviye: Performans analizi ve nadir karşılaşılan durumlar (edge case’ler) ile son bulur.

PowerShell’de Sayı Biçimlendirmenin Temelleri

PowerShell, sayıları biçimlendirmek için çeşitli yöntemler sunar. En yaygın yöntemlerden biri, .ToString() metoduyla birlikte biçimlendirme dizelerini kullanmaktır. Bu metod, sayısal değerleri metin olarak temsil etmemizi ve bu metin gösterimini istediğimiz şekilde biçimlendirmemizi sağlar. Örneğin, “{0:N2}” biçimlendirme dizesi, sayıyı iki ondalık basamağa yuvarlayarak, binlik ayırıcılı olarak gösterir. “{0:F2}” ise iki ondalık basamağa yuvarlayarak gösterir, ancak binlik ayırıcı kullanmaz.

Örneğin;

$sayi = 1234.5678
$biçimlendirilmişSayi = $sayi.ToString("N2")
Write-Host "Binlik ayırıcılı, iki ondalık basamak: $biçimlendirilmişSayi"

$biçimlendirilmişSayi = $sayi.ToString("F2")
Write-Host "Binlik ayırıcısız, iki ondalık basamak: $biçimlendirilmişSayi"

Bu kod, 1234.57 ve 1234.57 çıktılarını verecektir. “N” ve “F” biçimlendirme specifier’larının farkını anlamak önemlidir.

Nasıl: Basit Sayıları İki Ondalık Basamağa Yuvarlama?

Yeni başlayanlar için, basit bir sayıyı iki ondalık basamağa yuvarlamak oldukça kolaydır. .ToString("F2") veya .ToString("N2") metodlarını kullanarak bu işlemi gerçekleştirebiliriz.

$sayi = 3.14159
$yuvarlanmışSayi = [double]($sayi.ToString("F2")) # veya "N2"
Write-Host "Yuvarlanmış sayı: $yuvarlanmışSayi"

Bu kod, 3.14 çıktısını verecektir. Dikkat edilmesi gereken nokta, .ToString() metodunun bir *string* döndürmesidir. Eğer sayısal işlemler yapmanız gerekiyorsa, sonucu tekrar [double]‘a dönüştürmeniz gerekir.

Nasıl: Karmaşık Sayıları ve Dizileri İki Ondalık Basamağa Yuvarlama?

Gerçek dünya senaryolarında, genellikle tek bir sayı değil, sayı dizileriyle çalışırız. Bu durumda, her bir sayıyı ayrı ayrı yuvarlamamız gerekir. Bunun için ForEach-Object cmdlet’ini kullanabiliriz.

$sayilar = @(12.345, 67.8901, 2.1234567)
$yuvarlanmışSayilar = $sayilar | ForEach-Object {$_.ToString("F2")}
Write-Host "Yuvarlanmış sayılar: $($yuvarlanmışSayilar -join ', ')"

Bu kod, 12.35, 67.89, 2.12 çıktısını verecektir. -join ', ' komutu, dizi elemanlarını virgül ve boşlukla birleştirir.

Gerçek Dünya Örneği: Finansal Raporlama

Bir finansal raporlama sisteminde, her bir ürünün fiyatını iki ondalık basamağa yuvarlamamız gerekebilir. Örneğin, aşağıdaki gibi bir veri setimiz olsun:

$urunler = @(
    @{UrunAdi = "Ürün A"; Fiyat = 15.999},
    @{UrunAdi = "Ürün B"; Fiyat = 25.5555},
    @{UrunAdi = "Ürün C"; Fiyat = 10.00001}
)

Bu verileri iki ondalık basamağa yuvarlayarak bir tablo oluşturabiliriz:

$urunler | ForEach-Object {
    $yuvarlanmışFiyat = $_.Fiyat.ToString("C2") # Para birimi sembolü ile
    Write-Host "Ürün Adı: $($_.UrunAdi), Yuvarlanmış Fiyat: $yuvarlanmışFiyat"
}

Performans Optimizasyonu

Büyük veri kümeleriyle çalışırken, performans önemli bir faktördür. ForEach-Object kullanmak, her bir eleman için ayrı bir işlem başlatır. Daha büyük performans için, [decimal] veri tipini kullanarak doğrudan yuvarlama yapabilir veya daha verimli yöntemler araştırabilirsiniz. Örneğin, Math.Round() fonksiyonu da kullanılabilir, ancak dikkatli olmak gerekir çünkü varsayılan olarak .NET’in yuvarlama davranışı banker’s rounding’dir (en yakın çift sayıya yuvarlama).

İleri Seviye: Edge Case’ler ve Hata Yönetimi

Bazı durumlarda, beklenmedik sonuçlar elde edebiliriz. Örneğin, Infinity veya NaN (Not a Number) değerleriyle çalışırken. Bu durumları ele almak için hata yönetimi kullanmalıyız.

try {
    $sayi = [double]::PositiveInfinity
    $yuvarlanmışSayi = $sayi.ToString("F2")
    Write-Host "Yuvarlanmış sayı: $yuvarlanmışSayi"
}
catch {
    Write-Host "Hata oluştu: $_"
}

Bu kod, “Hata oluştu” mesajını verecektir çünkü Infinity değeri iki ondalık basamağa yuvarlanamaz.

Nasıl: Özel Durumları Ele Alma?

Özel yuvarlama kurallarına ihtiyaç duyduğumuz durumlarda, Math.Round() fonksiyonunu kullanabiliriz. Bu fonksiyon, yuvarlama modunu belirtmemize olanak tanır.

$sayi = 12.345
$yuvarlanmışSayi = [Math]::Round($sayi, 2, [MidpointRounding]::AwayFromZero) # En uzak sayıya yuvarlama
Write-Host "Yuvarlanmış sayı: $yuvarlanmışSayi"

$yuvarlanmışSayi = [Math]::Round($sayi, 2, [MidpointRounding]::ToEven) # Banker's rounding
Write-Host "Yuvarlanmış sayı (Banker's Rounding): $yuvarlanmışSayi"

Sonuç

PowerShell’de sayıları iki ondalık basamağa yuvarlamak için çeşitli yöntemler mevcuttur. Seçtiğiniz yöntem, veri kümenizin büyüklüğüne, performans gereksinimlerinize ve özel yuvarlama kurallarınıza bağlıdır. Bu makalede ele alınan teknikler ve örneklerle, verilerinizi doğru ve verimli bir şekilde biçimlendirebilirsiniz. Daha fazla bilgi için [Fatih Soysal’ın bloguna](https://fatihsoysal.com) göz atabilirsiniz.

Sıkça Sorulan Sorular:

1. .ToString("F2") ve .ToString("N2") arasındaki fark nedir? F2, iki ondalık basamak gösterir, binlik ayırıcı kullanmaz. N2, iki ondalık basamak gösterir ve binlik ayırıcısını kullanır (yerel ayara göre).

2. Hata yönetimi neden önemlidir? Beklenmedik girdiler (örneğin, NaN, Infinity) ile karşılaştığımızda, programımızın çökmesini önlemek için hata yönetimi kullanmalıyız.

3. Math.Round() fonksiyonu ne zaman kullanılır? Özel yuvarlama kurallarına (örneğin, banker’s rounding) ihtiyaç duyduğumuzda Math.Round() fonksiyonunu kullanabiliriz.

4. Büyük veri kümeleri için hangi yöntem daha verimlidir? Büyük veri kümeleri için, ForEach-Object yerine daha verimli yöntemler araştırılmalıdır. Örneğin, [decimal] veri tipi ve doğrudan yuvarlama işlemleri performansı artırabilir.

5. Ondalıklı sayıları yuvarlama dışında başka nasıl biçimlendirebilirim? PowerShell, sayısal verileri çeşitli şekillerde biçimlendirmek için birçok format specifier’ı sunar. Bunları Microsoft Docs’ta bulabilirsiniz.

Yazar: Fatih Soysal

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık