CGFloat for NSString with decimal precision only if there is a fractional part

I don’t know how to correctly formulate the heading ... but I wonder if there is any smart format specifier that will take number 4.5 and give me "4.5", but also take number 2 and give me @ "2".

Using the% .1f specifier gives me @ "4.5", but also @ "2.0". I am trying to get rid of the ".0" bit.

Is there such a beast, or will I have to work a bit on this? FWIW, I'm trying to iterate over an array of values ​​from 0 to 5, increasing in half-steps, so 0, 0.5, 1, 1.5, ..., 4.5, 5

Hooray!

+4
source share
2 answers

NSNumberFormatter - . , , . :

NSArray *numbers = @[@0, @0.5, @1.0, @1.5, @2.0, @2.5];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.alwaysShowsDecimalSeparator = NO;
numberFormatter.minimumFractionDigits = 0;
numberFormatter.maximumFractionDigits = 1;
numberFormatter.minimumIntegerDigits = 1;
for (NSNumber *number in numbers) {
    NSLog(@"%@", [numberFormatter stringFromNumber:number]);
}

:

>> 0
>> 0.5
>> 1
>> 1.5
>> 2
>> 2.5
+8

(Swift):

let num1: Double = 5
let num2: Double = 5.52
let numberFormatter = NSNumberFormatter()
numberFormatter.numberStyle = .DecimalStyle
print(numberFormatter.stringFromNumber(NSNumber(double: num1)))
print(numberFormatter.stringFromNumber(NSNumber(double: num2)))

5, 5.52.

0

Source: https://habr.com/ru/post/1543585/


All Articles