1

数字や文字列を分解せずにすべての数字をxx、xx 10進形式に変換するにはどうすればよいですか?お気に入り;

8,9 --> 8,90

8,99 --> 8,99

12,1 --> 12,10

129,9 --> 129,90

何か案が?

4

5 に答える 5

5

次のようなnumber_formatを使用できます。

$n = 2.1;
echo number_format($n, 2, ','); // 2,10

入力に小数点としてコンマがある場合は、次のコマンドで値を浮動小数点数に変換できます。

$number = floatval(str_replace(',', '.', str_replace('.', '', $string_number)));

str_replace('.', '', $string_number)千のセパレータを削除するために使用されます。 str_replace(',', '.', ... )カンマをドットに置き換えるために使用されます。

于 2013-01-09T10:09:59.263 に答える
3

拡張機能を有効にしている場合intl、問題への最善のアプローチ(IMO)は、この質問に対する受け入れられた回答に示されています:PHP:フォーマットされていないお金

使用できます

マニュアルの例:

$formatter = new NumberFormatter('de_DE', NumberFormatter::CURRENCY);
var_dump($formatter->parseCurrency("75,25 €", $curr));

与える:float(75.25)

intl拡張機能はデフォルトでは有効になっていないことに注意してください。インストール手順を参照してください。

その後、float値とフォーマットがありますが、これはを使用すると簡単な問題number_format()です。

その拡張機能がない場合は、この質問の正規表現アプローチを確認してください。金銭的な文字列をクリーンアップする簡単な方法

于 2013-01-09T10:23:21.723 に答える
1

$money = number_format($number, 2, ",", ","); // $number must be a float, i.e 8.8

入力に小数点としてコンマが必要な場合は、次のようにします。

$money = "20,2";
$fixed_money = floatval(str_replace(",", ".", $money));
echo number_format($fixed_money, 2, ",", ",");
于 2013-01-09T10:09:44.177 に答える
0

str_padは、欠落しているゼロを追加します

$val = '1008,95';
$len = strpos($val, ',') + 3;
$newval = str_pad($val, $len, '0', STR_PAD_RIGHT);
echo "Value: " . $newval . "<br>";

ただし、値の小数点以下2桁を超えないようにする必要があります。

于 2013-01-09T10:19:56.813 に答える
0

表示している通貨に応じて、このような処理が可能なコンポーザーパッケージを作成しました。

https://packagist.org/packages/votemike/money

国も入力すると、現地の方法で通貨がフォーマットされます(コンマの有無にかかわらず、小数点以下の桁数が正しい)。

$money = new Money(99.50, 'JPY');
$money->format(); //¥100

したがって、表示したい金額と表示している通貨で新しいMoneyオブジェクトを作成するだけの場合、そのオブジェクトで-> format()を呼び出すと、探している結果が得られます。

于 2017-08-18T13:59:12.550 に答える