我需要将一个数字四舍五入,比如 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
}
您可以只在代码中使用算法:
例如,假设您需要将一个数字四舍五入到百位。
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);
编辑:我的原始答案在准备好之前就提交了,因为我不小心按了一个键来提交它。哎呀。