0

はい。あなたが正しいです。もちろん、これは重複した質問です。私の質問にフラグを立てる前に、以下を読み続けてください。

float 値を丸めたいのですが、これは

56.6748939 to 56.7
56.45678 to 56.5
56.234589 to 56.2

実際には、任意の数の小数精度にすることができます。しかし、私はそれを最も近い値に丸めたいと思っています。(5以上なら切り上げ、そうでなければ切り捨て)。

以下のコードでそれを行うことができます。

float value = 56.68899
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]init];
[numberFormatter setMaximumFractionDigits:1];
[numberFormatter setRoundingMode:NSNumberFormatterRoundUp];

NSString *roundedString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:value]];
NSNumber *roundedNumber = [NSNumber numberFromString:roundedString];
float roundedValue = [roundedNumber floatValue];

上記のコードは長いプロセスのように見えます。四捨五入する数がいくつかあります。したがって、このプロセスでは、float 値を NSNumber と NSString と NSNumber と float に変換するのは困難です。

私が尋ねたことを達成する他の簡単な方法はありますか?

上記のコードにはまだ疑問があります。それは言いroundUpます。それで、それはroundDownうまくいくでしょうか?

4

7 に答える 7

6

単純に 10 を掛けて、四捨五入してから 10 で割ることはできませんか?

于 2013-05-02T07:48:06.940 に答える
3

試す

CGFloat float1 = 56.6748939f;
CGFloat float2 = 56.45678f;

NSLog(@"%.1f %.1f",float1,float2);

56.7 56.5

編集 :

float value = 56.6748939f;
NSString *floatString = [NSString stringWithFormat:@"%.1f",floatValue];
float roundedValue = [floatString floatValue];
于 2013-05-02T07:54:34.540 に答える
1
    NSString* strr=[NSString stringWithFormat: @"%.1f", 3.666666];
    NSLog(@"output is:  %@",strr);

出力は次のとおりです:3.7

    float fCost = [strr floatValue];
于 2013-05-02T08:00:27.933 に答える
0

float は必要ありません。6 桁または 7 桁の精度しか得られないからです。また、CGFloat も必要ありません。iPad Air または iPhone 5s を除いて、6 桁または 7 桁の精度しか得られないからです。double を使用したい。

1 桁への丸めは非常に簡単に行われます。

double x = 56.6748939;
double rounded = round (10 * x) / 10; 
于 2014-04-16T06:50:10.680 に答える
0

これは私のために働く

NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:1];
[formatter setMinimumFractionDigits:0];

CGFloat firstnumber = 56.6748939;
NSString *result1 = [formatter stringFromNumber:[NSNumber numberWithFloat:firstnumber]];

NSLog(@"RESULT #1: %@",result1);

CGFloat secondnumber = 56.45678;
NSString *result2 = [formatter stringFromNumber:[NSNumber numberWithFloat:secondnumber]];

NSLog(@"RESULT #2: %@",result2);

CGFloat thirdnumber = 56.234589;
NSString *result3 = [formatter stringFromNumber:[NSNumber numberWithFloat:thirdnumber]];

NSLog(@"RESULT #2: %@",result3);
于 2013-05-02T08:01:58.107 に答える
0

使用できます

[dictionaryTemp setObject:[NSString stringWithFormat:@"%.1f",averageRatingOfAllOrders] forKey:@"AvgRating"];

%.1f は、小数点以下 1 桁のみの値 2.1 を提供します。

于 2017-11-17T10:18:57.210 に答える