如何从文本字段获取十进制值
在我的 iPhone 应用程序中,我需要用户能够在文本字段中输入小数金额,然后我需要将其转换为浮点数。
我使用以下代码:
CGFloat amount = [amountTextField.text floatValue];
当用户来自美国并使用点表示十进制值时,它工作正常,但对于使用逗号的欧洲用户,它不会获取该值。在使用 floatValue 之前我应该将 ,
替换为 .
还是有更好的方法?
In my iPhone app I need the user to be able to enter a decimal amount in a textfield and then I need to convert it into float.
I use the following code:
CGFloat amount = [amountTextField.text floatValue];
It works fine when the user is from US and use point for decimal values, but for European users that use comma instead it doesn't get the value. Should I just replace ,
with .
before using floatValue or is there a better way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
更好的方法是使用 NSDecimalNumber,无论如何浮点数都很丑。因为 2.2 应该是 2.2 而不是 2.2000000477
如果您不想使用 NSDecimalNumber,请查看 NSNumberFormatter 和 NSNumber。您也可以将其转换回 CGFloat(这只是 float 的另一个名称)。
当涉及到本地化时,您总是希望使用内置功能。当您使用字符串编辑时,您做错了。
a better way would be to use NSDecimalNumber, floats are ugly anyway. Because 2.2 should be 2.2 and not 2.2000000477
If you don't want to use NSDecimalNumber have a look into NSNumberFormatter and NSNumber. You could convert it back to CGFloat (which is just another name for float) too.
When it comes to localization you always want to use the built-in functionality. When you use string editing you are doing it wrong.
是的,您需要将逗号替换为“.”并且还使用
float
代替CGFloat
使用此方法来实现此目的
yes you need to replace the comma with "." and also use
float
insteadCGFloat
use this method for this purpose
iOS 4.1 及更高版本支持 UIKeyboardTypeDecimalPad,并且您不应转换任何字符。
例子:
iOS 4.1 and higher support the UIKeyboardTypeDecimalPad and you shouldn't convert any characters.
Example: