私は、浮動小数点数が浮動小数点数の0より大きい場合、別のことをする必要があるメソッドを持っています。基本的には、変数があるかどうかをチェックする必要があります。 0未設定の浮動小数点と値が0の浮動小数点を区別するにはどうすればよいですか?
のだから、はどのようなプレースホルダ私が未設定の値(ゼロ、NULL、NO、など)、および変数が0の値をtrueを返すことなく、設定されていないかどうかを確認するためにテストすることができますどのようにとして使用する必要があります?
私は、浮動小数点数が浮動小数点数の0より大きい場合、別のことをする必要があるメソッドを持っています。基本的には、変数があるかどうかをチェックする必要があります。 0未設定の浮動小数点と値が0の浮動小数点を区別するにはどうすればよいですか?
のだから、はどのようなプレースホルダ私が未設定の値(ゼロ、NULL、NO、など)、および変数が0の値をtrueを返すことなく、設定されていないかどうかを確認するためにテストすることができますどのようにとして使用する必要があります?
未定義状態を示すために定数値を使用すると、変数が正当にその定数の値を取得したときにエラーになることがよくあります。
NSNumber
を使用してフロートを保管することを検討してください。そうすれば、それはnil
だけでなく、その状態にデフォルト設定されます。
これは、少数の浮動小数点だけが必要であることを前提としています。何百万ものものが必要な場合は、NSNumber
が遅すぎることがあります。
私はこれらの浮動小数点数で数学を行う必要があるので、NSNumberは理想的ではありません。私は一時的に変換することができますが、それは高価で不要なようです。あなたはNaNのようなものを使うことの危険性を拡大できますか? – Nathan
浮動小数点数が割り当てられてNaNの値を保持することがあるため、コードで未割り当てとして処理される可能性があります。もちろん、とにかくNaNをほとんどの数学ルーチンに盲目的に渡すべきではありません。これらの値がユーザーから来た場合、入力がNaNになったときに再入力するように指示することも論理的です。 – Dondragmer
これらのプロパティをオーバーロードする代わりに(それぞれXとYと呼ぶ)、プロパティごとに別々のisValid
フラグを作成します。浮動小数点数が設定されていないことを示すためにフラグを初期化し、フラグを適切に管理するための独自のセッターを用意します。したがって、コードは次のようになります。
実際にはさらに進んでXのセッターにもYを割り当て、逆も同様です。あるいは、XとYが密接にリンクしていて、他の値に基づいてXとYを計算できる場合は、実際には両方のプロパティに対して1つの変数しか必要としません。
なぜNaN(1.0/0.0など)を使用しないのですか?浮動小数点数がNaNかどうかをテストするには、それはちょうど 'num!= num'(NaNはそれ自身でさえ、何にも等しくない)です。 – cHao
0で除算してNaNを取得すると、シグナリングNaNをトラップ/生成する可能性があるため、危険です。 –
より良い方法はありますか? *意図的に*生成する方法を心配するほどNaNを混乱させていません。 :)確かに 'NaN'は浮動小数点型のリテラルとしては機能しません... – cHao