Pertanyaan Membulatkan ke nilai tertentu?


Saya perlu membulatkan angka, katakanlah 543 untuk ratusan atau puluhan tempat. Bisa jadi salah satunya, karena ini adalah bagian dari permainan dan tahap ini dapat meminta Anda untuk melakukan satu atau yang lain.

Jadi misalnya, ia bisa bertanya, "Jumlah bulat ke puluhan terdekat", dan jika jumlahnya 543, mereka harus masuk 540.

Namun, saya tidak melihat fungsi yang Anda dapat menentukan nilai tempat target untuk dibulatkan. Saya tahu ada solusi mudah, saya tidak bisa memikirkannya sekarang.

Dari apa yang saya lihat, itu round fungsi putaran desimal terakhir?

Terima kasih


4
2018-03-24 05:48


asal


Jawaban:


Untuk membulatkan ke tempat 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
}

Untuk putaran ke tempat 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
}

EDIT: Mencoba menggabungkan yang di atas menjadi satu:

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
}

7
2018-03-24 05:53



Anda hanya dapat menggunakan algoritma dalam kode Anda:

Misalnya, katakanlah Anda perlu mengumpulkan nomor hingga seratus.

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

1
2018-03-24 05:52



Untuk membulatkan angka, Anda dapat menggunakan operator modulus,%.

Operator modulus memberi Anda sisa setelah pembagian.

Jadi 543% 10 = 3, dan 543% 100 = 43.

Contoh:

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);

Edit: Jawaban asli saya telah dikirimkan sebelum siap, karena saya secara tidak sengaja menekan kunci untuk mengirimkannya. Ups.


1
2018-03-24 06:02