2015-06-12 62 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);