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

  • 2ndfloor91

    2ndfloor91

    17 Kasım 2007
  • Eric Enge

    Eric Enge

    2 Kasım 2009
  • NYLON Video

    NYLON Video

    11 Aralık 2006