【问题标题】:How to get decimal value from text field如何从文本字段中获取十进制值
【发布时间】:2011-03-08 11:40:49
【问题描述】:

在我的 iPhone 应用程序中,我需要用户能够在文本字段中输入小数,然后我需要将其转换为浮点数。

我使用以下代码:

CGFloat amount = [amountTextField.text floatValue];

当用户来自美国并使用点作为十进制值时,它可以正常工作,但对于使用逗号的欧洲用户,它不会获得值。我应该在使用 floatValue 之前将 , 替换为 . 还是有更好的方法?

【问题讨论】:

    标签: iphone uitextfield decimal


    【解决方案1】:

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

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

    如果您不想使用 NSDecimalNumber,请查看 NSNumberFormatter 和 NSNumber。您也可以将其转换回 CGFloat(这只是 float 的另一个名称)。

    说到本地化,您总是希望使用内置功能。当您使用字符串编辑时,您做错了。

    【讨论】:

      【解决方案2】:

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

      为此目的使用此方法

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

      【讨论】:

        【解决方案3】:

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

        例子:

        someTextField.keyboardType=UIKeyboardTypeDecimalPad;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-05
          • 2011-07-12
          • 2017-11-02
          • 2017-12-22
          • 2015-05-04
          相关资源
          最近更新 更多