# objective c - Make a float only show two decimal places

ID : 10315

viewed : 28

### Top 5 Answer for objective c - Make a float only show two decimal places  91

It is not a matter of how the number is stored, it is a matter of how you are displaying it. When converting it to a string you must round to the desired precision, which in your case is two decimal places.

E.g.:

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

`%.02f` tells the formatter that you will be formatting a float (`%f`) and, that should be rounded to two places, and should be padded with `0`s.

E.g.:

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

Here are few corrections-

``//for 3145.559706 ``

Swift 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" ``

Obj-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" ``

and so on...  73

You can also try using NSNumberFormatter:

``NSNumberFormatter* nf = [[[NSNumberFormatter alloc] init] autorelease]; nf.positiveFormat = @"0.##"; NSString* s = [nf stringFromNumber: [NSNumber numberWithFloat: myFloat]]; ``

You may need to also set the negative format, but I think it's smart enough to figure it out.  63

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

usage:

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

In Swift Language, if you want to show you need to use it in this way. To assign double value in UITextView, for example:

``let result = 23.954893 resultTextView.text = NSString(format:"%.2f", result) ``

If you want to show in LOG like as objective-c does using NSLog(), then in Swift Language you can do this way:

``println(NSString(format:"%.2f", result)) ``