格式化 ios 中的浮点值

Formatting float values in ios

我有体重值,可以是 75 公斤和 75.5 公斤。

我想要这个值有两种款式:75kg、75.5kg,但不是 75.0kg。我该怎么做?

我有这个解决方案,但我不喜欢它

//show difference in 75 and 75.5 values style
NSString *floatWeight = [NSString stringWithFormat:@"%.1f",weightAtThePoint.floatValue];
NSString *intWeight = [NSString stringWithFormat:@"%.0f.0",weightAtThePoint.floatValue];
NSString *resultWeight;
if ([floatWeight isEqualToString:intWeight]) {
    resultWeight = [NSString stringWithFormat:@"%.0f",weightAtThePoint.floatValue];
} else {
    resultWeight = floatWeight;
}

如果您不喜欢您的解决方案,请查看我的解决方案

float flotvalue = weightAtThePoint.floatValue;
int reminder = flotvalue / 1.0;
if (reminder==flotvalue) {
    NSLog(@"%f",flotvalue); //75KG Solution
}
else {
    //75.xx solution
}

享受编码

最好的解决方案是使用数字格式化程序:

 static NSNumberFormatter * numberformatter = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        numberformatter = [[NSNumberFormatter alloc] init];
        [numberformatter setNumberStyle:NSNumberFormatterDecimalStyle];
        [numberformatter setMaximumFractionDigits:1];
        [numberformatter setMinimumFractionDigits:0];
        [numberformatter setLocale:[NSLocale currentLocale]];
    });

由于创建数字格式化程序需要一些资源,因此创建单个实例会更好。
当你需要打印一个字符串时,只需调用这个:

NSString * formattedString = [numberformatter stringFromNumber: weightAtThePoint];<br>

NSNumberFomatter 仅打印十进制数(如果它不同于 0),它还可以帮助您使用设备上的当前语言环境选择正确的小数点分隔符。