在ios中格式化浮点值

时间:2015-04-27 11:04:56

标签: ios iphone numbers number-formatting

我有体重值,它们可以像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;
}

2 个答案:

答案 0 :(得分:0)

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

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

享受编码

答案 1 :(得分:0)

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

 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不同,它还可以帮助您使用设备上的当前区域设置选择正确的小数分隔符。