iphone NSString stringWithFormat 和 float

标签 iphone nsstring floating-point stringwithformat

我有一个带有 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/

相关文章:

iphone - 在 UITableView 自定义单元格中获取值表单文本字段

iOS ViewController subview 在键盘出现时移动

iphone - iPad 应用程序继续作为 iPhone 应用程序运行?

iphone - UTF-8 字符问题(iOS、NSString)

objective-c - 评估字符串并作为 Objective-C 代码执行

c - 以特殊方式从文件中读取 float

iphone - 如何创建一组 uiimages 的副本?

ios - 如何将 __NSCFNumber 放入 NSString 中?

Python Decimal类型精度错误

c++ - 接近零的浮点值会导致被零除的错误吗?