4

数値を四捨五入する必要があります。たとえば、543を数百または数十の位に四捨五入する必要があります。それはゲームの一部であり、このステージではどちらか一方を実行するように求められる可能性があるため、どちらか一方である可能性があります。

たとえば、「10の位に四捨五入して」と尋ねることができ、その数が543の場合、540で入力する必要があります。

ただし、丸める対象の場所の値を指定できる関数が表示されません。私は簡単な解決策があることを知っています、私は今それを考えることができません。

私が見たところ、round関数は小数点以下を四捨五入していますか?

ありがとう

4

3 に答える 3

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
}

編集:上記を1つにマージしようとしました:

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
}
于 2013-03-24T05:53:19.217 に答える
1

コードでアルゴリズムを使用することができます。

たとえば、数値を100の位に切り上げる必要があるとします。

int c = 543
int k = c % 100
if k > 50
   c = (c - k) + 100
else 
   c = c - k
于 2013-03-24T05:52:56.183 に答える
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);

編集:誤ってキーを押して送信したため、元の回答は準備が整う前に送信されました。おっと。

于 2013-03-24T06:02:06.190 に答える