0

来た後、フロートを2つの数値に丸める方法があるかどうか誰かが知っていますか。

例:

10.28000 -> 10.3
13.97000 -> 14.0
5.41000 -> 5.4

どうもありがとう !

よろしく、Sébastien;)

4

6 に答える 6

1

これを試して:

float aFloatValue = 3.1415926;
NSString *formatted = [NSString stringWithFormat:@"%01.1f", aFloatValue];
NSLog(@"Formatted: %@", formatted);

古き良きものと考えてくださいsprintf

于 2012-08-28T15:12:14.820 に答える
1

NSNumberFormatterを使用して、指定された派閥の数字で文字列を作成します。

float num = 10.28000;

formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:1];

NSNumber *value = [NSNumber numberWithFloat:num];
NSString *newNumString = [formatter stringFromNumber:value];
于 2012-08-28T15:13:35.973 に答える
1

あなたも試すことができます

float num = 10.28000
float result = (roundf(num * 10.0))/10.0;

(10を掛けてから丸め、次に10で割る).0を忘れないでください。除算は整数ではなく浮動小数点数で行われるため、再び丸められます。

于 2012-08-28T15:16:14.787 に答える
1

NSRoundPlainの振る舞いを伴う純粋なCocoaの方法:

- (NSDecimalNumber *)decimalNumberForFloat:(float)f_

{{

NSNumber *number                           = [NSNumber numberWithFloat:f_];
NSDecimal decimal                          = [number decimalValue];
NSDecimalNumber *originalDecimalNumber     = [NSDecimalNumber decimalNumberWithDecimal:decimal];
NSDecimalNumberHandler *roundingBehavior   = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain
                                              scale:0
                                              raiseOnExactness:NO
                                              raiseOnOverflow:NO
                                              raiseOnUnderflow:NO
                                              raiseOnDivideByZero:NO];

return [originalDecimalNumber decimalNumberByRoundingAccordingToBehavior:roundingBehavior];

}

NSDecimalNumberはNSNumberのサブクラスであるため、プリミティブフロート呼び出しを取得するには-[NSDecimalNumber floatValue]

于 2012-08-29T03:21:13.437 に答える
0

これを試してみてください:

float myFloat = 10.4246f;
myFloat = ((int) ((myFloat * 100) + 5)) / 100.0f;
于 2012-08-28T15:16:35.210 に答える
0
float fval = 1.54f;
float nfval = ceilf(fval * 10.0f + 0.5f)/10.0f;
于 2012-08-28T15:23:08.907 に答える