SORU
4 AĞUSTOS 2010, ÇARŞAMBA


C : Bir sayının en yakın katına Yuvarlama

OK - basit bir soru gibi görünüyor burada, bu (ve eğer biri kapatmak için oy kullanırsa sileceğim) gönderme neredeyse utanıyorum.

Bu doğru yolu C sayıda bir çok yuvarlak.

Diğer soru Bu ile ilgili olduğunu biliyorum ama specficially C bunu yapmak için en iyi yolu nedir merak ediyorum :

int roundUp(int numToRound, int multiple)
{
 if(multiple == 0)
 {
  return numToRound;
 }

 int roundDown = ( (int) (numToRound) / multiple) * multiple;
 int roundUp = roundDown   multiple; 
 int roundCalc = roundUp;
 return (roundCalc);
}

Güncelleme: Üzgünüm, muhtemelen niyeti netleştirmedi. İşte bazı örnekler:

roundUp(7, 100)
//return 100

roundUp(117, 100)
//return 200

roundUp(477, 100)
//return 500

roundUp(1077, 100)
//return 1100

roundUp(52, 20)
//return 60

roundUp(74, 30)
//return 90

EDİT: tüm cevaplar için Teşekkürler. Girdim işte:

int roundUp(int numToRound, int multiple)  
{  
 if(multiple == 0)  
 {  
  return numToRound;  
 }  

 int remainder = numToRound % multiple; 
 if (remainder == 0)
  {
    return numToRound; 
  }

 return numToRound   multiple - remainder; 
}  

CEVAP
4 AĞUSTOS 2010, ÇARŞAMBA


Bu pozitif sayılar için değil emin hakkında olumsuz çalışır. Sadece tamsayı matematiği kullanır.

int roundUp(int numToRound, int multiple) 
{ 
 if(multiple == 0) 
 { 
  return numToRound; 
 } 

 int remainder = numToRound % multiple;
 if (remainder == 0)
  return numToRound;
 return numToRound   multiple - remainder;
}

Edit: Burada" her zaman >bu sonuç ne demek "ile negatif sayılar ile, eğer çalışan bir versiyonu. = girişi.

int roundUp(int numToRound, int multiple) 
{ 
    if (multiple == 0) 
        return numToRound; 

    int remainder = abs(numToRound) % multiple;
    if (remainder == 0)
        return numToRound;
    if (numToRound < 0)
        return -(abs(numToRound) - remainder);
    return numToRound   multiple - remainder;
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AndyMcMillinTV

    AndyMcMillin

    6 HAZİRAN 2007
  • fireflame65

    fireflame65

    27 Mart 2007
  • TheDigiCraft

    TheDigiCraft

    25 NİSAN 2011