1

$numval = 12345.50;

必要な出力:

12 345,50

ドットの代わりにコンマは問題ではありませんが、千単位の区切り文字を空白にするにはどうすればよいですか?

スペースのあるPHPマネーフォーマットに気づきましたが、これは重複した投稿ではありません。入力値を丸めるため、使用number_formatは問題外です。渡された値を丸めることはできません。

正確に何をするかを実行する組み込みの方法はありますnumber_format()が、値を丸めずに、またはこれを行うために独自の関数を作成する必要がありますか?

4

3 に答える 3

3

丸めが問題外の場合、浮動小数点値も問題外です。浮動小数点演算は正確ではないため、丸めたくない場合は整数に戻る必要があります。その場合、フォーマット機能を自分で実装する必要があります。

これは、お金を扱っている場合に特に当てはまります。たとえば、通貨を表すためにDoubleまたはFloatを使用しないのはなぜですか?を参照してください。

于 2012-05-30T18:28:22.607 に答える
2

これは、使用する関数のバージョンのように見えます。

string number_format ( float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',' )

したがって、たとえば:

$newNumber = number_format($oldNumber, 2, ",", " ");

詳細については、http://php.net/manual/en/function.number-format.phpを確認してください。

于 2012-05-30T18:27:22.567 に答える
2

number_format()ページのこのコメントから(ただし、number_formatのデフォルトに一致するように関数を変更しました)。

丸めを防ぐには:

function fnumber_format($number, $decimals=0, $dec_point='.', $thousands_sep=',') {
        if (($number * pow(10 , $decimals + 1) % 10 ) == 5)  //if next not significant digit is 5
            $number -= pow(10 , -($decimals+1));

        return number_format($number, $decimals, $dec_point, $thousands_sep);
}
于 2012-05-30T18:33:04.350 に答える