受け入れられた答えは正しいです.OPがNumberFormatter
.
NumberFormatter::parse
指定されoutput
たロケール形式float
の引数を受け入れます。string
ただし、解析は出力をフォーマットしません。実行するのと同じですecho (float) '5.20'; //(float) 5.2
NumberFormatter::format
はoutput
、string
指定されたロケール形式で、integer
またはfloat
引数を受け入れます。これは実行するのと同じですがecho number_format(5.2, 2); //(string) "5.20"
、number_format
分数と千単位の区切り記号としてデフォルト値を使用し、目的の表示規則に基づいて変更する必要があります。
NumberFormatter
parse
メソッドを呼び出す前にメソッドを呼び出す必要があります。format
これは、ロケール固有の文字列値を同等の整数または浮動小数点値に変換しNumberFormatter
、目的の出力用に別のものにするためです。
$lv = new \NumberFormatter('lv', \NumberFormatter::DECIMAL);
$lv->setAttribute($input::FRACTION_DIGITS, 2); //applies rounding during format
$en = new \NumberFormatter('en', \NumberFormatter::DECIMAL);
$en->setAttribute($output::FRACTION_DIGITS, 2); //applies rounding during format
foreach (['5,77', '5,20', '5,2', '5,00', '5', '0'] as $value) {
$parsed = $lv->parse($value);
var_dump($parsed); //convert locale string to float value
var_dump($en->format($parsed)); //convert float to locale string
var_dump($lv->format($parsed)); //convert float to locale string
echo "<br/>\n";
}
$lv::parse($値)
+-------+--------+----------+-------+
| Value | Parse | EXPECTED | VALID |
+-------+--------+----------+-------+
| 5,77 | 5.77 | 5.77 | YES |
| 5,20 | 5.2 | 5.2 | YES |
| 5,2 | 5.2 | 5.2 | YES |
| 5,00 | 5 | 5 | YES |
| 5 | 5 | 5 | YES |
| 0 | 0 | 0 | YES |
+-------+--------+----------+-------+
$en::format($parsed)
+-------+--------+----------+-------+
| Value | Format | EXPECTED | VALID |
+-------+--------+----------+-------+
| 5,77 | 5.77 | 5.77 | YES |
| 5,20 | 5.20 | 5.20 | YES |
| 5,2 | 5.20 | 5.20 | YES |
| 5,00 | 5.00 | 5.00 | YES |
| 5 | 5.00 | 5.00 | YES |
| 0 | 0.00 | 0.00 | YES |
+-------+--------+----------+-------+
$lv::format($parsed)
+-------+--------+----------+-------+
| Value | Format | EXPECTED | VALID |
+-------+--------+----------+-------+
| 5,77 | 5,77 | 5,77 | YES |
| 5,20 | 5,20 | 5,20 | YES |
| 5,2 | 5,20 | 5,20 | YES |
| 5,00 | 5,00 | 5,00 | YES |
| 5 | 5,00 | 5,00 | YES |
| 0 | 0,00 | 0,00 | YES |
+-------+--------+----------+-------+