Objective-Cでfloatを最も近い整数に丸めるにはどうすればよいですか。
例:
float f = 45.698f;
int rounded = _______;
NSLog(@"the rounded float is %i",rounded);
「丸みを帯びたフロートは46です」と印刷する必要があります
推奨される方法はこの答えです: https://stackoverflow.com/a/4702539/308315
元の回答:
0.5を追加した後、intにキャストします。
そう
NSLog (@"the rounded float is %i", (int) (f + 0.5));
編集:あなたが求めた方法:
int rounded = (f + 0.5);
NSLog (@"the rounded float is %i", rounded);
C標準関数ファミリround()
を使用します。 roundf()
for float
、round()
for double
、およびroundl()
for long double
。その後、選択した整数型に結果をキャストできます。
Objective-Cでフロートを丸める最も簡単な方法は、lroundf
です。
float yourFloat = 3.14;
int roundedFloat = lroundf(yourFloat);
NSLog(@"%d",roundedFloat);
float
を最も近い整数に丸めるには、roundf()
を使用します
_roundf(3.2) // 3
roundf(3.6) // 4
_
float
から常に上限値を取得するためにceil()
関数を使用することもできます。
_ceil(3.2) // 4
ceil(3.6) // 4
_
最低値の場合floor()
_floorf(3.2) //3
floorf(3.6) //3
_
rint()
のマニュアルページを確認してください
以下の整数で浮動小数点値を丸める場合は、Objective Cで浮動小数点値を丸める簡単な方法です。
int roundedValue = roundf(Your float value);
試しにチェックアウトしましょう
//Your Number to Round (can be predefined or whatever you need it to be)
float numberToRound = 1.12345;
float min = ([ [[NSString alloc]initWithFormat:@"%.0f",numberToRound] floatValue]);
float max = min + 1;
float maxdif = max - numberToRound;
if (maxdif > .5) {
numberToRound = min;
}else{
numberToRound = max;
}
//numberToRound will now equal it's closest whole number (in this case, it's 1)