我需要將一個數字四捨五入,比如說543到數百或十個位置。它可以是任何一個,因爲它是遊戲的一部分,這個階段可以要求你做一個或另一個。舍入到特定值?
因此,例如,它可能要問,「回合數最接近的十位」,如果數量爲543,他們將不得不在540
進入然而,我沒有看到一個功能,你可以指定目標地點值。我知道有一個簡單的解決方案,我現在無法想象。
從我看到的,round
函數四捨五入最後一個小數位?
感謝
我需要將一個數字四捨五入,比如說543到數百或十個位置。它可以是任何一個,因爲它是遊戲的一部分,這個階段可以要求你做一個或另一個。舍入到特定值?
因此,例如,它可能要問,「回合數最接近的十位」,如果數量爲543,他們將不得不在540
進入然而,我沒有看到一個功能,你可以指定目標地點值。我知道有一個簡單的解決方案,我現在無法想象。
從我看到的,round
函數四捨五入最後一個小數位?
感謝
四捨五入至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
}
你可能想更新你的邏輯爲num = num-deci + 10;取整爲10的位置代碼。 – kevinl 2015-09-28 20:00:41
您可以只使用一種算法,代碼:
例如,讓我們說,你需要一個數四捨五入到百位。
int c = 543
int k = c % 100
if k > 50
c = (c - k) + 100
else
c = c - k
要對數字進行舍入,可以使用模數運算符%。
模數運算符爲您提供除法後的餘數。
所以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);
編輯:我原來的答覆提交它準備好之前,因爲我不小心撞到一鍵提交它。哎呀。
我不明白你的問題:( – iPatel 2013-03-24 05:51:20
@iPatel我增加了一個例子 – Austin 2013-03-24 05:52:38