我在浮点数中有值25.00,但当我在屏幕上打印它时,它是25.0000000。 如何显示只有两位小数点后的值?


当前回答

 lblMeter.text=[NSString stringWithFormat:@"%.02f",[[dic objectForKey:@"distance"] floatValue]];

其他回答

 lblMeter.text=[NSString stringWithFormat:@"%.02f",[[dic objectForKey:@"distance"] floatValue]];

在objective-c中,如果你正在处理常规字符数组(而不是指向NSString的指针),你也可以使用:

printf("%.02f", your_float_var);

OTOH,如果你想把这个值存储在一个char数组中,你可以使用:

sprintf(your_char_ptr, "%.02f", your_float_var);

这不是数字如何存储的问题,而是如何显示它的问题。当将其转换为字符串时,必须四舍五入到所需的精度,在您的示例中是小数点后两位。

例如:

NSString* formattedNumber = [NSString stringWithFormat:@"%.02f", myFloat];

%.02f告诉格式化程序,您将格式化一个浮点数(%f)和,它应该四舍五入到两个位置,并且应该用0填充。

例如:

%f = 25.000000
%.f = 25
%.02f = 25.00

我根据上面的回答做了一个快速的扩展

extension Float {
    func round(decimalPlace:Int)->Float{
        let format = NSString(format: "%%.%if", decimalPlace)
        let string = NSString(format: format, self)
        return Float(atof(string.UTF8String))
    }
}

用法:

let floatOne:Float = 3.1415926
let floatTwo:Float = 3.1425934
print(floatOne.round(2) == floatTwo.round(2))
// should be true

这里有一些更正

//for 3145.559706

斯威夫特3

let num: CGFloat = 3145.559706
print(String(format: "%f", num)) = 3145.559706
print(String(format: "%.f", num)) = 3145
print(String(format: "%.1f", num)) = 3145.6
print(String(format: "%.2f", num)) = 3145.56
print(String(format: "%.02f", num)) = 3145.56 // which is equal to @"%.2f"
print(String(format: "%.3f", num)) = 3145.560
print(String(format: "%.03f", num)) = 3145.560 // which is equal to @"%.3f"

卷-C

@"%f"    = 3145.559706
@"%.f"   = 3146
@"%.1f"  = 3145.6
@"%.2f"  = 3145.56
@"%.02f" = 3145.56 // which is equal to @"%.2f"
@"%.3f"  = 3145.560
@"%.03f" = 3145.560 // which is equal to @"%.3f"

等等……