objective c - How to restrict number of fraction digits when parsing number from string? -
i want restrict number of fraction digits user allowed enter uitextfield accepts (localized) numeric input.
example 4 fraction digits allowed:
- good:
42,10.123,12345.2345 - bad:
0.123456,6.54321
right now, i'm using nsnumberformatter's numberfromstring: in uitextfield delegate's textfield:shouldchangecharactersinrange:replacementstring: determine whether it's legal numeric value.
unfortunately, nsnumberformatter seems ignore maximumfractiondigits in numberfromstring:. in tests using getobjectvalue:forstring:range:error: had same problem, , range full length of string afterwards (unless start entering letters; range indicates part of string digits):
nsnumberformatter* formatter = [[nsnumberformatter alloc] init]; formatter.maximumfractiondigits = 3; formatter.roundingmode = nsnumberformatterroundhalfup; formatter.generatesdecimalnumbers = yes; nsdecimalnumber* n = (nsdecimalnumber*)[formatter numberfromstring:@"10.12345"]; nslog(@"number: %@", n.description); // expected: 10.123, is: 10.12345 how best restrict number of fraction digits in user input?
after unrestricted number, can use stringwithformat on number create string number of decimal places.
eg.
double number = mytextfield.text.doublevalue; nsstring *restrictedstring = [nsstring stringwithformat:@"%.4f", number];
Comments
Post a Comment