我有一个带有 UIKeyboardTypeDecimalPad
的输入,我需要我的用户输入一个 float (点后有无限个字符)。输入后,我用以下内容过滤字符串:
NSString *newValue = [NSString stringWithFormat:@"%.f",[textField.text floatValue]]
但这在点后给了我很多不必要的数字(例如,对于 2.25,它给出了 2.249999)。
我需要的只是过滤输入,使其成为合法的 float (数字且不超过一个点)。
我该怎么做?
最佳答案
NSString *newValue = [NSString stringWithFormat:@"%0.1f", [textField.text floatValue]];
点后面的数字是您想要的小数位数。
更新: 您可以使用字符串操作来确定用户输入的小数位数(不要忘记检查边缘情况):
NSInteger numberOfDecimalPlaces = textString.length - [textString rangeOfString:@"."].location - 1;
然后,如果您想使用新的 float 创建一个新字符串,使其达到与显示精度相同的水平,您可以使用:
NSString *stringFormat = [NSString stringWithFormat:@"%%0.%if", numberOfDecimalPlaces];
NSString *newString = [NSString stringWithFormat:stringFormat, newFloat];
关于iphone NSString stringWithFormat 和 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9125233/