Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 1|Yanıt: 0

[İpucu] .NET/C#, yuvarlama için Math.Round'un MidpointRounding uygulamasını kullanır

[Bağlantıyı kopyala]
Yayınlandı46 saniye önce | | | |
Gereksinimler: Genellikle yuvarlama için kullanılır ve hassasiyet gereksinimlerine çok duyarlı değildir.

İki ondalık basamayı yuvarlamak için geliştirici aşağıdaki kodu yazdı,
Kod çok basit, geliştiricilerGerçek sonuç 12.12 oldu; bu da beklenen yuvarlatma sonucu olan 12.13 ile çelişiyordu

Bu sonucun nedeni, Math.Round'un varsayılan olarak yuvarlatma kuralını kullanmaması, bunun yerine turları eşleştirmek için kullanmasıdır.

Beşe yuvarlayarak çift oluşturun

Bir çift oluşturmak için altıdan beşe yuvarlanması denilen yöntem, anlamlı rakamlar belirlendikten sonra, sonraki önemli rakam 4'ten küçük veya eşitse, aşağı yuvarlanır; eğer 6'dan büyük veya eşitse, bir yukarıya yuvarlanır. Bir sonraki önemli rakam 5 olduğunda,

  • 5'ten önceki sayı tek ise, beşi yuvarlayıp bir artım
  • Eğer 5, çift sayıdan önce ise, 5'i atlayın (0 çifttir).

İstatistiksel olarak, beşe yuvarlamaktan daha doğrudur, çünkü çok sayıda hesaplama olduğunda, her beşe yuvarlamak daha büyük bir sayıya yol açabilir.

Mesela:

1.15+1.25+1.35+1.45 = 5.2

Anlamlı rakamlar bir ondalık basamak ise, sonuç yuvarlatma prensibi kullanılarak elde edilir

1.2 + 1.3 + 1.4 + 1.5 = 5.4

Beş çifte yuvarlanarak elde edilen sonuç şudur:

1.2 + 1.2 + 1.4 + 1.4 = 5.2

Bu, yuvarlama kuralının daha kesin sonuçlar verdiğini gösterir.

Math.Round

Peki Math.Round'u beklenen yuvarlamayı nasıl elde etmek için kullanıyorsunuz?

Aslında, C#'daki Math.Round birçok aşırı yükleme yöntemi sunar, bunlar arasında iki yöntem vardır:
Her iki yöntem de, iki seçilebilir değere sahip MidpointRounding'in bir enumeration değişkeni olan mod adlanan üçüncü bir parametreyi sağlar

  • AwayFromZero - yuvarlama
  • ToEven - yuvarlamadan eşit yuvarlamaya

Yani ideal yuvarlatılmış bir sonuç istiyorsak, aşağıdaki kodu kullanabiliriz:
Aşağıda gösterildiği gibi MidpointRounding sayımı:



Referans:Bağlantı girişi görünür.




Önceki:Yüksek eşdeğerli EF Core sorguları için (NOLOCK) optimizasyonu
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com