web-dev-qa-db-ja.com

Objective-Cフロートの丸め

Objective-Cでfloatを最も近い整数に丸めるにはどうすればよいですか。

例:

float f = 45.698f;
int rounded = _______;
NSLog(@"the rounded float is %i",rounded);

「丸みを帯びたフロートは46です」と印刷する必要があります

39
CodeGuy

推奨される方法はこの答えです: 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);
27
Dave

C標準関数ファミリround()を使用します。 roundf() for floatround() for double、およびroundl() for long double。その後、選択した整数型に結果をキャストできます。

146

Objective-Cでフロートを丸める最も簡単な方法は、lroundfです。

float yourFloat = 3.14;
int roundedFloat = lroundf(yourFloat); 
NSLog(@"%d",roundedFloat);
5
capikaw

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
_
5
vp2698

rint()のマニュアルページを確認してください

3
NSResponder

以下の整数で浮動小数点値を丸める場合は、Objective Cで浮動小数点値を丸める簡単な方法です。

int roundedValue = roundf(Your float value);
3

試しにチェックアウトしましょう

//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)
0