来た後、フロートを2つの数値に丸める方法があるかどうか誰かが知っていますか。
例:
10.28000 -> 10.3
13.97000 -> 14.0
5.41000 -> 5.4
どうもありがとう !
よろしく、Sébastien;)
来た後、フロートを2つの数値に丸める方法があるかどうか誰かが知っていますか。
例:
10.28000 -> 10.3
13.97000 -> 14.0
5.41000 -> 5.4
どうもありがとう !
よろしく、Sébastien;)
これを試して:
float aFloatValue = 3.1415926;
NSString *formatted = [NSString stringWithFormat:@"%01.1f", aFloatValue];
NSLog(@"Formatted: %@", formatted);
古き良きものと考えてくださいsprintf
。
NSNumberFormatterを使用して、指定された派閥の数字で文字列を作成します。
float num = 10.28000;
formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:1];
NSNumber *value = [NSNumber numberWithFloat:num];
NSString *newNumString = [formatter stringFromNumber:value];
あなたも試すことができます
float num = 10.28000
float result = (roundf(num * 10.0))/10.0;
(10を掛けてから丸め、次に10で割る).0を忘れないでください。除算は整数ではなく浮動小数点数で行われるため、再び丸められます。
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]
これを試してみてください:
float myFloat = 10.4246f;
myFloat = ((int) ((myFloat * 100) + 5)) / 100.0f;
float fval = 1.54f;
float nfval = ceilf(fval * 10.0f + 0.5f)/10.0f;