Zendで数値が浮動小数点かどうかを確認しようとしています。このコードを呼び出すと:
Zend_Locale_Format::isFloat('4.202', array('locale' => 'de'));
trueを返します。ただし、これは次のとおりです。
Zend_Locale_Format::isFloat('4.20', array('locale' => 'de'));
falseを返します。なんで?
Zendで数値が浮動小数点かどうかを確認しようとしています。このコードを呼び出すと:
Zend_Locale_Format::isFloat('4.202', array('locale' => 'de'));
trueを返します。ただし、これは次のとおりです。
Zend_Locale_Format::isFloat('4.20', array('locale' => 'de'));
falseを返します。なんで?
これは、ドイツ語ロケールがピリオド.を千の区切り文字として使用しており、2番目の例ではその区切り記号が間違った場所にあるためです。
例えば:
13.001,45
trueに渡されたときに期待値を与える必要がありisFloat()ます。
ところで、次の4.202ように解釈されます4202(これは分数のない浮動小数点と見なすこともできます)。
参照:正規化とローカリゼーション、セクション「29.3.6。浮動小数点値のテスト」