2012-08-09 12 views
6

Sık sık kendimi bulmak programlama gibi bir şey hesaplamak gerek ederken: daha açıkx = (y/n) + (y% n? 1: 0) hesaplamanın daha zarif bir yolu var mı?

x = (y/n) + (y % n ? 1 : 0);

Veya:

x = y/n; 
if (y % n != 0) { 
    x = x + 1; 
} 

bu değeri elde etmek için daha şık bir yolu var mı? Koşullu ifade kullanmadan elde edilebilir mi?

+0

Ya da hiç olumsuz mu? Modelinizde, tamsayı bölme sıfıra doğru yuvarlak mı, yoksa negatif sonsuzluğa doğru yuvarlanıyor mu? – Kevin

+0

@Kevin: y ve n her zaman pozitiftir. Teknik olarak sanırım sıfırdan aşağıya doğru olan keser. – grieve

cevap

14

Yani, tamsayı bölümünün aşağı yerine yuvarlanmasını istiyorsunuz. Sen payında için n-1 ekleyerek bu sahte yapabilirsiniz:

x = (y + n - 1)/n; 

bunu sadece yeterince size istenen sonucu verecek şekilde aşağı doğru yuvarlanır edeceğiz değerini kaydırmak Bu şekilde.

+2

Sadece 'n' veya 'y' büyükse olası taşma/sarma sorunlarından haberdar olun. –

İlgili konular