属性を設定する

# NumberFormatter::setAttribute

# numfmt_set_attribute

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::setAttribute -- numfmt_set_attribute — 属性を設定する

### 説明

オブジェクト指向型

public function NumberFormatter::setAttribute(int `$attribute`, int|float `$value`): bool

手続き型

function numfmt_set_attribute(NumberFormatter `$formatter`, int `$attribute`, int|float `$value`): bool

フォーマッタに関連づけられている数値属性を設定します。 数値属性の例としては、フォーマッタが作成する整数部の桁数などがあります。

### パラメータ

`formatter`

  NumberFormatter オブジェクト。

`attribute`

  属性指定子。 数値属性 定数のいずれか。

`value`

  属性の値。

### 戻り値

成功した場合に `true` を、失敗した場合に `false` を返します。

### 例

例1 numfmt_set_attribute() の例

    <?php
    $fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
    echo "Digits: ".numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    numfmt_set_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS, 2);
    echo "Digits: ".numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    ?>

例2 オブジェクト指向の例

    <?php
    $fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
    echo "Digits: ".$fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    $fmt->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 2);
    echo "Digits: ".$fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    ?>

上の例の出力は以下となります。

    Digits: 3
    1.234.567,891
    Digits: 2
    1.234.567,89

例3 `NumberFormatter::ROUNDING_MODE` を使って値を切り捨てる

デフォルトでは、NumberFormatter は値を丸めます。 `NumberFormatter::ROUNDING_MODE` に `NumberFormatter::ROUND_DOWN` を設定すると、 丸め処理を行わず、指定した小数桁数で値を切り捨てます。

    <?php
    $fmt = new NumberFormatter('en_US', NumberFormatter::DECIMAL);
    $fmt->setAttribute(NumberFormatter::FRACTION_DIGITS, 2);

    echo "Default rounding mode:\n";
    echo $fmt->format(3.789), "\n"; // 3.79 (rounded up)
    echo $fmt->format(3.781), "\n"; // 3.78 (rounded down)

    $fmt->setAttribute(NumberFormatter::ROUNDING_MODE, NumberFormatter::ROUND_DOWN);

    echo "\nWith ROUND_DOWN (truncate):\n";
    echo $fmt->format(3.789), "\n"; // 3.78 (truncated)
    echo $fmt->format(3.781), "\n"; // 3.78 (truncated)
    ?>

上の例の出力は以下となります。

    Default rounding mode:
    3.79
    3.78

    With ROUND_DOWN (truncate):
    3.78
    3.78

### 参考

- numfmt_get_error_code() - フォーマッタの直近のエラーコードを取得する
- numfmt_get_attribute() - 属性を取得する
- numfmt_set_text_attribute() - テキスト属性を設定する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open