2012-08-28 101 views

回答

1

使用NSNumberFormatter創建一個具有指定派系數字的字符串。

float num = 10.28000; 

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

NSNumber *value = [NSNumber numberWithFloat:num]; 
NSString *newNumString = [formatter stringFromNumber:value]; 
+2

...和NSNumberFormatter輸出而不是字符串? – Cyrille

+0

它會給你一個nsnumber。您可以獲取字符串或浮點值。 –

+0

然後你需要一個字符串在某處顯示。 – Cyrille

1

試試這個:

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

把它看成是一個很好的舊sprintf

+0

問題是關於浮點數的舍入,而不是格式化爲字符串。 – Tutankhamen

1

,你也可以嘗試

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

(乘以10,那麼圓,然後除以10再一次),這樣的劃分是一個浮動,而不是 不要忘記.0一個整數,這將圓再次

0

嘗試了這一點:

float myFloat = 10.4246f; 
myFloat = ((int) ((myFloat * 100) + 5))/100.0f; 
0
float fval = 1.54f; 
float nfval = ceilf(fval * 10.0f + 0.5f)/10.0f; 
1

純可可方式與NSRoundPlain行爲:

- (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的的一個子類,以獲得基本float呼叫 - [NSDecimalNumber的floatValue]