2015-06-12 129 views
1

我有float3500,435232123。所有我想知道,如果存在(在Objective C),讓我只保留最後4位數字在我的情況的功能是2123客觀C,修剪浮動

+0

是你的不是3500.435232123?那麼4位小數應該是4352而不是2123,如果它可以使用[NSString stringWithFormat:@「%。4f」,3500.435232123]; [ –

+0

爲什麼你想修剪浮動? – Droppy

+0

首先,不要使用浮動。 Float的精度只有7位數,所以如果你的電話號碼是3500,435232123,那就不好了。使用雙。 「最後四位數」= 2123導致結果不準確。如果號碼是3500,4352321230,該怎麼辦?這是相同的數字,但最後四位數字是2130.無論如何,如果以無限精度顯示_any_浮點數,則它是一個整數或以5結尾,因爲浮點數是_binary_。所以結果是_never_ 2123. – gnasher729

回答

0

您可以使用NSNumberFormatter

NSNumberFormatter *format = [[NSNumberFormatter alloc]init]; 
[format setNumberStyle:NSNumberFormatterDecimalStyle]; 
[format setRoundingMode:NSNumberFormatterRoundHalfUp]; 
[format setMaximumFractionDigits:4]; 
[format setMinimumFractionDigits:4]; 

string = [NSString stringWithFormat:@"%@",[format stringFromNumber:[NSNumber numberWithFloat:65.50055]] ; 

或者乾脆

NSString *string = [NSString stringWithFormat:@"%.04f", floatValue]; 

如果只想最後四位數字,浮子轉換爲字符串

NSString *string = [NSString stringWithFormat:@"%f", floatValue]; 

,並獲得最後四個字符行動

NSString *lastFour = [string substringFromIndex: [string length] - 4]; 
+0

是的,但數字仍然顯示,我只想在點後4位數,沒有左側。謝謝!!! –

+0

@DanPaschevici我已經更新了我的答案。 –

+0

非常感謝!!!! –

0

它你想獲得小數部分,你可以做x - floor(x)。例如:

float x = 3500,435232123; 
NSString *string = [NSString stringWithFormat:@"%.04f", x - floor(x)]; 

並獲得4位小數位做Fawad馬蘇德說。

0

不,據我所知,沒有這樣的功能。但是,這是一種實現你想要的東西的方法。

首先,你必須點後,它舍入到四位:

NSString *exampleString = [NSString stringWithFormat:@"%.04f", valueToRound]; 

然後,你的位置在exampleString裏面的逗號:

NSRange commaRange = [valueString rangeOfString:@","]; 

最後創建finalString與價值觀從那NSRange。子字符串起始於commaRange.location+commaRange.length,因爲那是直接在逗號後面的索引。

NSString *finalString = [valueString substringWithRange:NSMakeRange(commaRange.location+commaRange.length,valueString.length-commaRange.location-commaRange.length)]; 

希望能幫到你。

0

我認爲這不是預定義的功能。

,我想的解決辦法是:

float floatNum = 3500.435232123; 

轉換float號碼串和修整/子串的字符串,如例如:

NSString *stringFloat = [NSString stringWithFormat:@"%f", floatNum]; 
NSString *newString = [stringFloat substringWithRange:NSMakeRange(stringFloat.length - 4, stringFloat.length)]; 

NSLog(@"%@", newString); 

另一個是這樣的:

NSString *stringFloat = [NSString stringWithFormat:@"%f", floatNum]; 

//separates the floating number to 
arr[0] = whole number 
arr[1] = decimals 

NSArray *arr=[str componentsSeparatedByString:@"."]; 

因爲你只是想在小數上工作,我認爲arr[1]是你需要的..

NSString *stringDecimals = (NSString *)arr[1]; 

if (stringDecimals.length > 4) //check the length of the decimals then cut if exceeds 4 character.. 
{ 
    stringDecimals = [stringDecimals substringWithRange:NSMakeRange(stringDecimals.length - 4, stringDecimals.length)]; 
} 

NSLog(@"stringDecimals: %@", stringDecimals);