SORU
10 HAZİRAN 2009, ÇARŞAMBA


Neden Matematik yapıyor.(2.5) dönüş 2 C 3 yerine yuvarlak#?

C#, Math.Round(2.5) sonucu 2.

3, değil mi? olması gerekiyor. Neden 2 yerine C#?

CEVAP
10 HAZİRAN 2009, ÇARŞAMBA


Öncelikle, bu bir C olmaz# bug her neyse - bir olurdu .NET hata. Dili C# - Math.Round nasıl uygulanır karar vermiyor.

Ve eğer the docs okursanız ikincisi, hiçbir varsayılan yuvarlama olduğunu görürsünüz "tura bile" (Banka'nın yuvarlama):

Değeri Döndürür< / ^ br . Tür: System.ÇiftDouble döndürür integral yazın.

Açıklamalar< / ^ br . Bu yöntemin davranış IEEE Standart 754,aşağıdaki 4. Bölüm. Yuvarlama bu tür bazen yuvarlama-en yakın aradı, ya da bankacı yuvarlama. En aza indirir gelen yuvarlama hataları bu sonucu sürekli yuvarlama orta nokta değeri tek bir yönde.

Math.Round MidpointRounding bir değer olan orta noktaları an overload kullanarak yuvarlak şeklini belirtin. MidpointRounding Bir bir yok olan aşırı her birine karşılık gelen bir yük var:

Yoksa, bu varsayılan de seçildi ya da farklı bir konu değil. (MidpointRounding tek tanıtıldı .NET 2.0. O zaman önce Kendin yapmadan istenen davranışı uygulamak için kolay bir yol var emin değilim.) Özellikle tarih olmadığını göstermiştirbeklendiğiAPI tasarım bir günah olan davranışlar - ve çoğu durumda. GörebiliyorumnedenBanka'nın Yuvarlama kullanışlıdır... ama hala birçok için bir sürpriz oldu.

Yakın Java bakmak ilginizi çekebilir daha fazla seçenek sunuyor eşdeğer numaralama (RoundingMode). (Sadece orta noktalar ile anlaşma yok.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BiGSH0TROB

    BiGSH0TROB

    7 NİSAN 2011
  • eyes4beautee

    eyes4beautee

    17 HAZİRAN 2011
  • The Warp Zone

    The Warp Zon

    24 AĞUSTOS 2007