2013-03-24 64 views
4

我需要將一個數字四捨五入,比如說543到數百或十個位置。它可以是任何一個,因爲它是遊戲的一部分,這個階段可以要求你做一個或另一個。舍入到特定值?

因此,例如,它可能要問,「回合數最接近的十位」,如果數量爲543,他們將不得不在540

進入然而,我沒有看到一個功能,你可以指定目標地點值。我知道有一個簡單的解決方案,我現在無法想象。

從我看到的,round函數四捨五入最後一個小數位?

感謝

+0

我不明白你的問題:( – iPatel 2013-03-24 05:51:20

+1

@iPatel我增加了一個例子 – Austin 2013-03-24 05:52:38

回答

7

四捨五入至100的地方

NSInteger num=543; 

NSInteger deci=num%100;//43 
if(deci>49){ 
    num=num-deci+100;//543-43+100 =600 
} 
else{ 
    num=num-deci;//543-43=500 
} 

舍入到10個位

NSInteger num=543; 

NSInteger deci=num%10;//3 
if(deci>4){ 
    num=num-deci+100;//543-3+10 =550 
} 
else{ 
    num=num-deci;//543-3=540 
} 

編輯: 試圖合併上述在一個:

NSInteger num=543; 

NSInteger place=100; //rounding factor, 10 or 100 or even more. 
NSInteger condition=place/2; 

NSInteger deci=num%place;//43 
if(deci>=condition){ 
    num=num-deci+place;//543-43+100 =600. 
} 
else{ 
    num=num-deci;//543-43=500 
} 
+0

你可能想更新你的邏輯爲num = num-deci + 10;取整爲10的位置代碼。 – kevinl 2015-09-28 20:00:41

1

您可以只使用一種算法,代碼:

例如,讓我們說,你需要一個數四捨五入到百位。

int c = 543 
int k = c % 100 
if k > 50 
    c = (c - k) + 100 
else 
    c = c - k 
1

要對數字進行舍入,可以使用模數運算符%。

模數運算符爲您提供除法後的餘數。

所以543%10 = 3,和543%100 = 43

例子:

int place = 10; 
int numToRound=543; 
// Remainder is 3 
int remainder = numToRound%place; 
if(remainder>(place/2)) { 
    // Called if remainder is greater than 5. In this case, it is 3, so this line won't be called. 
    // Subtract the remainder, and round up by 10. 
    numToRound=(numToRound-remainder)+place; 
} 
else { 
    // Called if remainder is less than 5. In this case, 3 < 5, so it will be called. 
    // Subtract the remainder, leaving 540 
    numToRound=(numToRound-remainder); 
} 
// numToRound will output as 540 
NSLog(@"%i", numToRound); 

編輯:我原來的答覆提交它準備好之前,因爲我不小心撞到一鍵提交它。哎呀。