1. ホーム
  2. string

[解決済み] Swift で文字列を浮動小数点に変換する

2022-10-07 13:07:40

質問

UITextFieldから取得した数値(実際にはStringであると推測される)をFloatに変換し、乗算できるようにしようとしています。

2つの UITextfield があり、それらは次のように宣言されています。

@IBOutlet var wage: UITextField
@IBOutlet var hour: UITextField

ユーザーがUIButtonを押したときに、ユーザーが稼いだ賃金を計算したいのですが、使用する前にまずfloatに変換する必要があるため、できません。

この方法で整数に変換する方法は知っています。

var wageConversion:Int = 0
wageConversion = wage.text.toInt()!

しかし、それらをfloatに変換する方法がわかりません。

どのように解決するのですか?

Swift 2.0以上

現在では Swift 2.0 を使うことができます。 Float(Wage.text) を返します。 Float? 型を返します。を返すだけである以下の解決策よりも、より明確です。 0 .

もしあなたが 0 の値が必要な場合、無効な Float を使用することができます。 Float(Wage.text) ?? 0 を返すと 0 でない場合は Float .


旧ソリューション

これを処理する最良の方法は、ダイレクトキャストです。

var WageConversion = (Wage.text as NSString).floatValue

実際に作ったのは extension を作り、これもうまく使えるようにしました。

extension String {
    var floatValue: Float {
        return (self as NSString).floatValue
    }
}

これで var WageConversion = Wage.text.floatValue を呼び出すだけで、エクステンションがブリッジを処理してくれるようになります!

この実装は、実際の浮動小数点数( . で入力)、また、ユーザーがテキストを入力フィールドにコピーするのを防ぐのにも役立つので、良い実装です( 12p.34 または、さらに 12.12.41 ).

明らかに、もし Apple が floatValue を追加した場合、これは例外を投げますが、その間に良いことがあるかもしれません。もし後で追加されるのであれば、コードを修正するために必要なことは、拡張機能を削除することで、すべてがシームレスに動作します。 .floatValue !

また、変数や定数は小文字で始める必要があります(例えば IBOutlets )