如何从文本字段获取十进制值

发布于 2024-10-20 23:38:22 字数 275 浏览 1 评论 0原文

在我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

旧人九事 2024-10-27 23:38:22

更好的方法是使用 NSDecimalNumber,无论如何浮点数都很丑。因为 2.2 应该是 2.2 而不是 2.2000000477

NSDecimalNumber *amount = [NSDecimalNumber decimalNumberWithString:amountTextField.text locale:[NSLocale currentLocale]];

如果您不想使用 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

NSDecimalNumber *amount = [NSDecimalNumber decimalNumberWithString:amountTextField.text locale:[NSLocale currentLocale]];

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.

じее 2024-10-27 23:38:22

是的,您需要将逗号替换为“.”并且还使用 float 代替 CGFloat

使用此方法来实现此目的

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement

yes you need to replace the comma with "." and also use float instead CGFloat

use this method for this purpose

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
千仐 2024-10-27 23:38:22

iOS 4.1 及更高版本支持 UIKeyboardTypeDecimalPad,并且您不应转换任何字符。

例子:

someTextField.keyboardType=UIKeyboardTypeDecimalPad;

iOS 4.1 and higher support the UIKeyboardTypeDecimalPad and you shouldn't convert any characters.

Example:

someTextField.keyboardType=UIKeyboardTypeDecimalPad;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文