Objective C, Trim 一个浮点数

Objective C, Trim a float

float 喜欢 3500,435232123。我只想知道是否存在(在 Objective C 中)一个让我只保留最后 4 位数字的函数是 2123。

您可以使用 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];

如果你想得到小数部分,你可以做x - floor(x)。例如:

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

并按照 Fawad Masud 所说的执行 4 位小数。

没有,据我所知没有这个功能。但这里有一种方法可以实现您想要的。

首先你要把它四舍五入到点后的四位数:

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

然后你得到逗号在 exampleString:

中的位置
NSRange commaRange = [valueString rangeOfString:@","];

最后,您使用 NSRange 中的值创建了 finalString。子字符串从 commaRange.location+commaRange.length 开始,因为那是紧跟在逗号之后的索引。

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

希望对你有所帮助。

我认为没有预定义函数。

而我想到的解决方案是:

float floatNum = 3500.435232123;

float 数字转换为字符串和 trim/substring 字符串,例如:

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);