
Math.Round C# (Geliştiriciler için Nasıl Çalışır)
C# programlama alanında, Math.Round değer yöntemi, özellikle çift-değerli ve desimal-değerli veri türleri ile çalışırken, sayısal değerlerin yuvarlanmasında önemli bir rol oynar. Bu yöntem, geliştiricilere belirli bir sayısal değeri en yakın tam değere veya daha az kesirli basamağa yuvarlamak için esneklik ve hassasiyet sağlayarak matematiksel işlemlerde esneklik ve doğruluk getirir. Midpoint Rounding gibi birkaç yuvarlama türü mevcuttur. Bu makalede, C# dilinde Math.Round'un çeşitli yönlerini ve kullanım senaryolarını keşfederek derinlemesine bir inceleme yapılacaktır. Bu makalenin sonraki bölümlerinde, IronPDF kütüphanesinin Iron Software tarafından PDF'lerin işlenmesi için nasıl kullanılabileceğini keşfedeceğiz.
Basics of Math.Round in C#
The Math.Round Yöntemi
C# dilinde Math.Round yöntemi, belirli bir yuvarlama konvansiyonu kullanarak kesirli basamakları yuvarlamak için güçlü bir araçtır. System ad alanının bir parçasıdır ve farklı yuvarlama operasyonlarına uyum sağlamak için birden fazla aşırı yük sunar.
// Methods overloaded by Math.Round
Math.Round(Double)
Math.Round(Double, Int32) // Int32 specifies number of fractional digits
Math.Round(Double, Int32, MidpointRounding) // Int32 specifies number of fractional digits, MidpointRounding is the type of rounding method
Math.Round(Double, MidpointRounding) // MidpointRounding is the type of rounding method
Math.Round(Decimal)
Math.Round(Decimal, Int32) // Int32 specifies number of fractional digits
Math.Round(Decimal, Int32, MidpointRounding)
Math.Round(Decimal, MidpointRounding)' Methods overloaded by Math.Round
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Math.Round(Double) Math.Round(Double, Int32) Math.Round(Double, Int32, MidpointRounding) Math.Round(Double, MidpointRounding) Math.Round(Decimal) Math.Round(Decimal, Int32) Math.Round(Decimal, Int32, MidpointRounding) Math.Round(Decimal, MidpointRounding)Double Değerini Yuvarlama
Double değerleri ile çalışırken, Math.Round genellikle bir sayıyı en yakın tam sayıya yuvarlamak için kullanılır. Örneğin:
double originalValue = 3.75;
double roundedValue = Math.Round(originalValue);
// Output: 4Dim originalValue As Double = 3.75
Dim roundedValue As Double = Math.Round(originalValue)
' Output: 4Bu örnekte, Math.Round metodu orijinal double değeri 3.75'i en yakın tamsayı olan 4'e yuvarladı.
Decimal Değerini Yuvarlama
Benzer şekilde, Math.Round metodu decimal değerlere de uygulanır. Aşağıdaki örneğe bakın:
decimal originalValue = 8.625m;
decimal roundedValue = Math.Round(originalValue, 2);
// Output: 8.63Dim originalValue As Decimal = 8.625D
Dim roundedValue As Decimal = Math.Round(originalValue, 2)
' Output: 8.63Burada, Math.Round yöntemini decimal sayıyı 8.625 iki ondalık basamağa yuvarlamak için kullandık, bu da yuvarlanmış 8.63 değerini verir.
En Yakın Tamsayı Değeri
Math.Round'un birincil amacı, verilen sayısal değeri en yakın tamsayıya yuvarlamaktır. Kesirli kısmın tam olarak iki tamsayı arasında yarıya geldiği durumlarda, yöntem belirtilen bir yuvarlama kuralını izler. Math.Round yönteminde bir argüman olarak kullanılabilen MidpointRounding numaralandırması, en yakın çift sayıya veya sıfırdan uzaklaştırarak yuvarlama yapılacağını belirler.
Belirtilen Yuvarlama Kuralları
MidpointRounding modunun nasıl uygulanabileceğini keşfedelim:
double originalValue = 5.5;
double roundedValueEven = Math.Round(originalValue, MidpointRounding.ToEven);
double roundedValueOdd = Math.Round(originalValue, MidpointRounding.AwayFromZero);
// Output: roundedValueEven = 6, roundedValueOdd = 6Dim originalValue As Double = 5.5
Dim roundedValueEven As Double = Math.Round(originalValue, MidpointRounding.ToEven)
Dim roundedValueOdd As Double = Math.Round(originalValue, MidpointRounding.AwayFromZero)
' Output: roundedValueEven = 6, roundedValueOdd = 6Bu örnekte, 5.5 değerini yuvarlarken, MidpointRounding.ToEven en yakın çift sayıya (sonuç 6) yuvarlar ve MidpointRounding.AwayFromZero sıfırdan uzağa yuvarlar, 6 sonucunu verir.
Belirlenen Ondalık Basamak Sayısına Yuvarlama
Belirli bir ondalık basamak sayısına yuvarlamak için, Math.Round yöntemi, kesirli rakam sayısını temsil eden ekstra bir parametrenin eklenmesine izin verir:
decimal originalValue = 9.123456m;
decimal roundedValue = Math.Round(originalValue, 3);
// Output: 9.123Dim originalValue As Decimal = 9.123456D
Dim roundedValue As Decimal = Math.Round(originalValue, 3)
' Output: 9.123Burada, ondalık sayı 9.123456 üç ondalık basamağa yuvarlanmış ve 9.123 yuvarlanmış değeri vermiştir.
Midpoint Values and Rounding Conventions in C#
Sonuçta en az anlamlı rakamdan sonra değer tam olarak iki sayı arasında yarıya geldiğinde bir orta nokta değeri ortaya çıkar. Örneğin, 2.56500 iki ondalık basamağa yuvarlandığında 2.57'dir, ve 3.500 tamsayıya yuvarlandığında 4'tür. Zorluk, tanımlanmış bir yuvarlama kuralı olmadan orta nokta değerleri için en yakın değeri belirleme stratejisindedir.
C#'taki Round yöntemi, orta nokta değerlerini yönetmek için iki yuvarlama kuralını destekler:
-
Sıfırdan Uzağa Yuvarlama: Orta nokta değerleri sıfırdan uzağa doğru sonraki sayıya yuvarlanır. Bu yöntem, MidpointRounding.AwayFromZero numaralandırma üyesiyle temsil edilir.
-
En Yakın Çifte Yuvarlama (Bankacı Yuvarlaması): Orta nokta değerleri en yakın çift sayıya yuvarlanır. Bu yuvarlama yaklaşımı, MidpointRounding.ToEven numaralandırma üyesi tarafından belirtilir.
decimal[] decimalSampleValues = { 1.15m, 1.25m, 1.35m, 1.45m, 1.55m, 1.65m };
decimal sum = 0;
// Calculate true mean values.
foreach (var value in decimalSampleValues)
{
sum += value;
}
Console.WriteLine("True mean values: {0:N2}", sum / decimalSampleValues.Length);
// Calculate mean values with rounding away from zero.
sum = 0;
foreach (var value in decimalSampleValues)
{
sum += Math.Round(value, 1, MidpointRounding.AwayFromZero);
}
Console.WriteLine("AwayFromZero mean: {0:N2}", sum / decimalSampleValues.Length);
// Calculate mean values with rounding to the nearest even.
sum = 0;
foreach (var value in decimalSampleValues)
{
sum += Math.Round(value, 1, MidpointRounding.ToEven);
}
Console.WriteLine("ToEven mean: {0:N2}", sum / decimalSampleValues.Length);Dim decimalSampleValues() As Decimal = { 1.15D, 1.25D, 1.35D, 1.45D, 1.55D, 1.65D }
Dim sum As Decimal = 0
' Calculate true mean values.
For Each value In decimalSampleValues
sum += value
Next value
Console.WriteLine("True mean values: {0:N2}", sum / decimalSampleValues.Length)
' Calculate mean values with rounding away from zero.
sum = 0
For Each value In decimalSampleValues
sum += Math.Round(value, 1, MidpointRounding.AwayFromZero)
Next value
Console.WriteLine("AwayFromZero mean: {0:N2}", sum / decimalSampleValues.Length)
' Calculate mean values with rounding to the nearest even.
sum = 0
For Each value In decimalSampleValues
sum += Math.Round(value, 1, MidpointRounding.ToEven)
Next value
Console.WriteLine("ToEven mean: {0:N2}", sum / decimalSampleValues.Length)Çıktı

MidpointRounding Modları

Sıfırdan Uzağa: 1
AwayFromZero yuvarlama stratejisi en yakın sayıya yuvarlar, iki sayı arasında yarıya gelen bir sayıyı sıfırdan uzağa doğru yuvarlar.
Sıfıra: 2
Bu strateji, sıfıra doğru yönlendirilmiş yuvarlama ile karakterize edilir. Sonuç, sonsuz hassas sonuçtan en yakın ve daha büyük olmayan büyüklükte olur.
Çifte: 0
Bu strateji en yakın sayıya yuvarlamayı içerir ve bir sayı iki sayı arasında yarıya geldiğinde, en yakın çift sayıya doğru yuvarlanır.
Negatif Sonsuzluğa: 3
Bu strateji aşağı doğru yuvarlamayı içerir ve sonuç, sonsuz hassas sonuçtan en yakın ve daha küçük olmaz.
Pozitif Sonsuzluğa: 4
Bu strateji yukarı doğru yuvarlamayı içerir ve sonuç, sonsuz hassas sonuçtan en yakın ve daha az olmaz.
Hassasiyet ve Çift Hassasiyetli Kayan Nokta
Hassasiyet ve Çift Değerler
Çift hassasiyetli kayan nokta sayıları ile çalışırken, kayan nokta temsilinin doğası gereği olası hassasiyeti anlamak önemlidir. Math.Round yöntemi, değerleri en yakın tamsayıya veya belirtilen bir ondalık basamak sayısına yuvarlayarak hassasiyet sorunlarını hafifletir.
Math.Round ile Belirtilen Hassasiyet
Geliştiriciler, hesaplamalarında istedikleri hassasiyeti elde etmek için Math.Round yönteminden yararlanabilirler:
double originalValue = 123.456789;
double result = Math.Round(originalValue, 4);
// Output: 123.4568, rounded valueDim originalValue As Double = 123.456789
Dim result As Double = Math.Round(originalValue, 4)
' Output: 123.4568, rounded valueBu örnekte, çift değer 123.456789 dört ondalık basamağa yuvarlanarak daha hassas bir değer olan 123.4568 elde edilir.
Orta Nokta Yuvarlama Stratejisi
Orta Nokta Değerlerini Yönetmek
Kesirli bir değerin tam olarak iki tamsayı arasında yarıya geldiği durumlarda orta nokta yuvarlama stratejisi önem kazanır. Math.Round yöntemi, böyle durumları çözmek için belirtilen MidpointRounding stratejisini uygular.
Orta Nokta Yuvarlama Örneği
Orta nokta yuvarlamanın kullanıldığı aşağıdaki örneğe bakalım:
double originalValue = 7.5;
double roundedValue = Math.Round(originalValue, MidpointRounding.AwayFromZero);
// Output: 8Dim originalValue As Double = 7.5
Dim roundedValue As Double = Math.Round(originalValue, MidpointRounding.AwayFromZero)
' Output: 8Burada, değer 7.5 sıfırdan uzağa yuvarlanarak 8 yuvarlanmış değeri verir.
Gerçek Dünya Senaryolarında Uygulama
Farklı bağlamlarda uygulamalarının birkaç örneği burada:
Mali Hesaplamalar
Finansal uygulamalarda hassas yuvarlama kritik öneme sahiptir. Örneğin, faiz oranlarını hesaplamak, para birimlerini dönüştürmek veya vergi hesaplamalarıyla uğraşmak gibi durumlarda, Math.Round yöntemi, sonuçların finansal standartlara uygun şekilde yuvarlanmasını sağlamak için kullanılabilir.
double interestRate = 0.04567;
double roundedInterest = Math.Round(interestRate, 4); // Round to 4 decimal placesDim interestRate As Double = 0.04567
Dim roundedInterest As Double = Math.Round(interestRate, 4) ' Round to 4 decimal placesKullanıcı Arayüzü Görüntüleme
Kullanıcı arayüzünde sayısal değerler sunulurken, genellikle daha iyi okunabilirlik için sayıların yuvarlanması yaygındır. Math.Round kullanarak yuvarlama, sunulan bilginin netliğini artırabilir.
double temperature = 23.678;
double roundedTemperature = Math.Round(temperature, 1); // Round to 1 decimal placeDim temperature As Double = 23.678
Dim roundedTemperature As Double = Math.Round(temperature, 1) ' Round to 1 decimal placeİstatistiksel Analiz
İstatistiksel analizde, önyargılar veya yanlışlıklar yaratmamak için hassas yuvarlama önemlidir. Math.Round yöntemi, sonuçları istenilen hassasiyet seviyesine getirmede yardımcı olabilir.
double meanValue = CalculateMean(data);
double roundedMean = Math.Round(meanValue, 2); // Round mean value to 2 decimal placesDim meanValue As Double = CalculateMean(data)
Dim roundedMean As Double = Math.Round(meanValue, 2) ' Round mean value to 2 decimal placesBilimsel Hesaplamalar
Bilimsel uygulamalarda hassasiyet kritik öneme sahiptir. Deneysel verilerle uğraşırken veya bilimsel hesaplamalar yaparken, Math.Round kullanarak yuvarlama sonuçların anlamlı ve doğru bir şekilde sunulmasını sağlar.
double experimentalResult = 9.87654321;
double roundedResult = Math.Round(experimentalResult, 5); // Round to 5 decimal placesDim experimentalResult As Double = 9.87654321
Dim roundedResult As Double = Math.Round(experimentalResult, 5) ' Round to 5 decimal placesMatematiksel Modelleme
Matematiksel modeller veya simülasyonlar gerçekleştirirken, yuvarlama karmaşık hesaplamaları basitleştirebilir. Math.Round yöntemi, modelleme sürecinde ara sonuçların hassasiyetini kontrol etmek için uygulanabilir.
double modelResult = SimulatePhysicalSystem(parameters);
double roundedModelResult = Math.Round(modelResult, 3); // Round to 3 decimal placesDim modelResult As Double = SimulatePhysicalSystem(parameters)
Dim roundedModelResult As Double = Math.Round(modelResult, 3) ' Round to 3 decimal placesOyun Geliştirme
Oyun geliştirme, fizik hesaplamaları, konumlandırma ve diğer matematiksel operasyonlarda sayısal hassasiyet gerektirir. Math.Round yöntemi, oyunla ilgili değerlerin uygun bir hassasiyet seviyesine yuvarlanmasını sağlar.
double playerPosition = CalculatePlayerPosition();
double roundedPosition = Math.Round(playerPosition, 2); // Round to 2 decimal placesDim playerPosition As Double = CalculatePlayerPosition()
Dim roundedPosition As Double = Math.Round(playerPosition, 2) ' Round to 2 decimal placesBu senaryoların her birinde, Math.Round yöntemi, geliştiricilere sayısal değerlerin hassasiyetini kontrol etme imkanı verir, böylelikle uygulamalarında doğruluk ve okunabilirliği artırır.
IronPDF Tanıtımı
IronPDF'nin temel özelliği, HTML'yi PDF'ye dönüştürme işlevi olup, düzen ve stilleri korur. Web içeriğini raporlar, faturalar ve belgeler için harika olan PDF'lere dönüştürür. HTML dosyalarını, URL'leri ve HTML dizelerini kolayca PDF'lere dönüştürebilirsiniz.
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End ClassŞimdi, IronPDF C# PDF kütüphanesi kullanarak PDF belgeleri nasıl oluşturabileceğimizi görelim.
Kurulum
IronPDF'yi NuGet Paket Yöneticisi konsolu veya Visual Studio paket yöneticisi aracılığıyla kurma seçeneğiniz var.
IronPDF'i NuGet Paket Yöneticisi kullanarak arama çubuğuna "IronPDF" yazarak yükleyin.
IronPDF kullanarak PDF Oluşturma
using IronPdf;
List<string> cart = new List<string>();
void AddItems(params string[] items)
{
for (int i = 0; i < items.Length; i++)
{
cart.Add(items[i]);
}
}
Console.WriteLine("Enter the cart items as comma-separated values:");
var itemsString = Console.ReadLine();
if (itemsString != null)
{
var items = itemsString.Split(",").ToArray();
AddItems(items);
}
AddItems("Sample1", "Sample2");
Console.WriteLine("-------------------------------------------------------");
Console.WriteLine("Display Cart");
string name = "Sam";
var count = cart.Count;
string content = $@"
<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} items in the cart.</p>
" + string.Join("\n", cart.Select(x => $"<p>{x}</p>"))
+ @"
</body>
</html>";
var pdfRenderer = new ChromePdfRenderer();
pdfRenderer.RenderHtmlAsPdf(content).SaveAs("cart.pdf");Imports Microsoft.VisualBasic
Imports IronPdf
Private cart As New List(Of String)()
Private Sub AddItems(ParamArray ByVal items() As String)
For i As Integer = 0 To items.Length - 1
cart.Add(items(i))
Next i
End Sub
Console.WriteLine("Enter the cart items as comma-separated values:")
Dim itemsString = Console.ReadLine()
If itemsString IsNot Nothing Then
Dim items = itemsString.Split(",").ToArray()
AddItems(items)
End If
AddItems("Sample1", "Sample2")
Console.WriteLine("-------------------------------------------------------")
Console.WriteLine("Display Cart")
Dim name As String = "Sam"
Dim count = cart.Count
Dim content As String = $"
<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} items in the cart.</p>
" & String.Join(vbLf, cart.Select(Function(x) $"<p>{x}</p>")) & "
</body>
</html>"
Dim pdfRenderer = New ChromePdfRenderer()
pdfRenderer.RenderHtmlAsPdf(content).SaveAs("cart.pdf")Yukarıdaki kodda, sepet öğeleri için bir HTML belgesi oluşturuyoruz ve ardından IronPDF kullanarak bunu bir PDF belgesi olarak kaydediyoruz.
Çıktı

Lisanslama (Ücretsiz Deneme Mevcuttur)
Sağlanan kodun işlevselliğini etkinleştirmek için bir lisans anahtarı edinmek gereklidir. Deneme anahtarını buradan edinebilir ve appsettings.json dosyasına eklemeniz gerekir.
"IronPdf.LicenseKey": "your license key"
Deneme lisansı teslim edilmek üzere e-posta ID'nizi sağlayın.
Sonuç
Sonuç olarak, C#'da Math.Round yöntemi, geliştiricilere en yakın tamsayıya veya belirtilen bir ondalık basamak sayısına yuvarlamak için esneklik sunan çok yönlü bir araçtır. Math.Round'un inceliklerini, orta nokta değerleriyle olan muamelesini ve MidpointRounding stratejilerinin kullanımını anlamak, C# programlamada doğru ve güvenilir matematiksel işlemler için esastır. İster finansal hesaplamalarla, ister kullanıcı arayüzü görüntülemeleriyle veya hassas sayısal temsili gerektiren diğer senaryolarla uğraşıyor olun, Math.Round yöntemi bir programcının araç kutusunda vazgeçilmez bir unsur olduğunu kanıtlar. Ek olarak, IronPDF'nin PDF belgeleri oluşturmak için çok yönlü bir kütüphane olduğunu gördük.

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.
İlgili Makaleler


