在小数点之前输出不带零的浮点数

时间:2018-07-02 00:56:36

标签: objective-c nsstring

我想知道如何将浮点数设置为零,然后是小数,然后是数字:

0.45

...像这样去掉小数点前面的零:

.45

在NSString中使用[NSString stringWithFormat:]方法,并使用目标C。

1 个答案:

答案 0 :(得分:0)

使用0stringWithFormat:格式化浮点值时,不能直接消除前导%f。您必须将自己从结果中删除:

NSString *result = [NSString stringWithFormat:@"%.2f", 0.45];
if ([result hasPrefix:@"0."]) {
    result = [result substringFromIndex:1];
}

但是更好的解决方案是使用NSNumberFormatter。将minimumIntegerDigits设置为0可以避免前导0

NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
fmt.numberStyle = NSNumberFormatterDecimalStyle;
fmt.minimumInterDigits = 0;
NSString *result = [fmt stringFromNumber:@(0.45)];

这具有为用户的语言环境正确格式化结果的优点(除了删除前导0之外)。

最好避免删除前导0。输出可能会使用户感到困惑。