2016-04-05 20 views
7

Zor bir gün geçiriyorum ama bir şey doğru şekilde eklenmiyor. Benim C# koduC# Math.Ceiling neden aşağı yuvarlanıyor?

, bu var: (. Her iki değer int değerlerdir) (int)TotalRecordCount = 12 ve ben alıyorum sonuç 2.
olduğunu (int)PageSize = 5.

Math.Ceiling((decimal)(this.TotalRecordCount/this.PageSize)) 

Hesaplamalarımda 12/5 = 2.4. Math.Ceiling'in her zaman yuvarlanacağını sanıyordum ve bu durumda bana 3 mü veriyor?

bunu yaparsam PS:

Math.Ceiling(this.TotalRecordCount/this.PageSize) 

alıyorum mesaj:

Math.Ceiling (this.TotalRecordCount/this.PageSize)
çağrısı aşağıdaki arasındaki belirsiz yöntem veya özellikler:
'System.Math.Ceiling (ondalık)' ve 'System.Math.Ceiling (çift)'

cevap

17

Sen "aşağı yuvarlama": bkz ondalık bölümü kullanmak onluya işlenen en az birini dönüştürmek zorundayız.

Bunu yaptığınızda

(this.TotalRecordCount/this.PageSize) 

Bu tamsayı bölümüdür ve bunun sonucu kesik int olduğu; decimal'a çevirmek için çok geç.

Math.Ceiling(((decimal)this.TotalRecordCount/this.PageSize)) 
:

bölünmeden önce dökme Bu sorunu düzeltmek için
7

TotalRecordCount ve PageSize int olduğundan ve int bölümü aşağı yuvarlanıyor. kesme Math.Ceiling varmadan önce gerçekleştiğini çünkü

Math.Ceiling((decimal)this.TotalRecordCount/this.PageSize));