Val*_*off 4 iphone floating-point nsstring stringwithformat
我有一个输入,UIKeyboardTypeDecimalPad我需要我的用户输入一个浮点(点后面的无限字符).输入后我用以下内容过滤字符串:
NSString *newValue = [NSString stringWithFormat:@"%.f",[textField.text floatValue]]
Run Code Online (Sandbox Code Playgroud)
但是这给了我一个点后的许多不必要的数字(例如2.25它给出了2.249999).
我只需要过滤输入,这将是一个合法的浮点数(数字和不超过一个点).
我怎么做?
Mag*_*ave 11
NSString *newValue = [NSString stringWithFormat:@"%0.1f", [textField.text floatValue]];
Run Code Online (Sandbox Code Playgroud)
点后面的数字是您想要的小数位数.
更新: 您可以使用字符串操作来确定用户输入的小数位数(不要忘记检查边缘情况):
NSInteger numberOfDecimalPlaces = textString.length - [textString rangeOfString:@"."].location - 1;
Run Code Online (Sandbox Code Playgroud)
然后,如果你想创建一个新的字符串,新的浮点数达到相同的显示精度级别,你可以使用:
NSString *stringFormat = [NSString stringWithFormat:@"%%0.%if", numberOfDecimalPlaces];
NSString *newString = [NSString stringWithFormat:stringFormat, newFloat];
Run Code Online (Sandbox Code Playgroud)