Wagh
Wagh

Reputation: 2688

NSNumber numberFromString not placed decimals

I am trying to convert NSString to NSNumber and it seems to create a decimal point issue here.

NSString *str = @"515.51515";

NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * myNumber = [f numberFromString:str];
NSLog(@"Number here:%@",myNumber);
[f release];

& result print is 2015-03-01 08:09:28.353 myApp [57376:2086924] Number here: 515.5151499999999

Actual debug log picture here

enter image description here

but actually it should be 515.51515 rather 515.5151499999999.

I tried all comibination with f.usesSignificantDigits & f.maximumFractionDigits =10 but no luck.
please let me know How to fix this?

Upvotes: 0

Views: 142

Answers (2)

Alex
Alex

Reputation: 3971

RMaddy is correct, floating point numbers will be a bit off.

Since an NSDecimalNumber is an NSNumber you can use:

NSNumber *number = [NSDecimalNumber decimalNumberWithString:@"515.51515"];

Upvotes: 1

Hopreeeenjust
Hopreeeenjust

Reputation: 282

Try to use construction:

NSNumber *myNumber = [NSNumber numberWithFloat:[str floatValue]];

I think it should work correctly.

Upvotes: 0

Related Questions