数字

class Cake\View\Helper\NumberHelper(View $view, array $config = [])

NumberHelper 包含方便的方法,使您能够在视图中以常用格式显示数字。这些方法包括格式化货币、百分比、数据大小、将数字格式化为特定精度,以及提供更多格式化数字的灵活性。

所有这些函数都会返回格式化的数字;它们不会自动将输出回显到视图中。

格式化货币值

Cake\View\Helper\NumberHelper::currency(mixed $value, string $currency = null, array $options = [])

此方法用于根据 3 个字母的 ISO 4217 货币代码,以常见的货币格式(EUR、GBP、USD)显示数字。在视图中的用法如下

// Called as NumberHelper
echo $this->Number->currency($value, $currency);

// Called as Number
echo Number::currency($value, $currency);

第一个参数 $value 应该是一个浮点数,它表示您正在表达的金额。第二个参数是一个字符串,用于选择预定义的货币格式方案

$currency

1234.56,按货币类型格式化

EUR

€1.234,56

GBP

£1,234.56

USD

$1,234.56

第三个参数是一个选项数组,用于进一步定义输出。以下选项可用

选项

描述

before

在渲染的数字之前显示的文本。

after

在渲染的数字之后显示的文本。

zero

用于零值的文本;可以是字符串或数字。例如 0、‘免费!’。

places

要使用的十进制位数,例如 2。

precision

要使用的最大十进制位数,例如 2。

locale

用于格式化数字的区域设置名称,例如 “fr_FR”。

fractionSymbol

用于分数数字的字符串,例如 ‘ 分’。

fractionPosition

“before” 或 “after”,用于放置分数符号。

pattern

用于格式化数字的 ICU 数字模式,例如 #,###.00

useIntlCode

设置为 true 将货币符号替换为国际货币代码。

如果 $currency 值为 null,则默认货币将从 Cake\I18n\Number::defaultCurrency() 中检索。要以会计格式格式化货币,您应该设置货币格式

Number::setDefaultCurrencyFormat(Number::FORMAT_CURRENCY_ACCOUNTING);

设置默认货币

Cake\View\Helper\NumberHelper::setDefaultCurrency($currency)

默认货币的设置器。这消除了始终将货币传递给 Cake\I18n\Number::currency() 的需要,并通过设置其他默认值来更改所有货币输出。如果 $currency 设置为 null,它将清除当前存储的值。

获取默认货币

Cake\View\Helper\NumberHelper::getDefaultCurrency()

默认货币的 getter。如果之前使用 setDefaultCurrency() 设置了默认货币,则将返回该值。默认情况下,如果设置了 intl.default_locale ini 值,它将检索该值,否则将检索 'en_US'

格式化浮点数

Cake\View\Helper\NumberHelper::precision(float $value, int $precision = 3, array $options = [])

此方法以指定的精度(小数位数)显示数字。它将进行四舍五入以保持定义的精度级别。

// Called as NumberHelper
echo $this->Number->precision(456.91873645, 2);

// Outputs
456.92

// Called as Number
echo Number::precision(456.91873645, 2);

格式化百分比

Cake\View\Helper\NumberHelper::toPercentage(mixed $value, int $precision = 2, array $options = [])

选项

描述

multiply

布尔值,指示是否需要将值乘以 100。对于十进制百分比很有用。

Cake\I18n\Number::precision() 一样,此方法根据提供的精度(将数字四舍五入以满足给定的精度)格式化数字。此方法还将数字表示为百分比,并在输出中附加百分号。

// Called as NumberHelper. Output: 45.69%
echo $this->Number->toPercentage(45.691873645);

// Called as Number. Output: 45.69%
echo Number::toPercentage(45.691873645);

// Called with multiply. Output: 45.7%
echo Number::toPercentage(0.45691, 1, [
    'multiply' => true
]);

与人类可读值交互

Cake\View\Helper\NumberHelper::toReadableSize(string $size)

此方法以人类可读的形式格式化数据大小。它提供了一种快捷方式,用于将字节转换为 KB、MB、GB 和 TB。大小将以两位精度级别显示,根据提供的数据大小(即,较大的大小将以较大的术语表示)

// Called as NumberHelper
echo $this->Number->toReadableSize(0); // 0 Byte
echo $this->Number->toReadableSize(1024); // 1 KB
echo $this->Number->toReadableSize(1321205.76); // 1.26 MB
echo $this->Number->toReadableSize(5368709120); // 5 GB

// Called as Number
echo Number::toReadableSize(0); // 0 Byte
echo Number::toReadableSize(1024); // 1 KB
echo Number::toReadableSize(1321205.76); // 1.26 MB
echo Number::toReadableSize(5368709120); // 5 GB

格式化数字

Cake\View\Helper\NumberHelper::format(mixed $value, array $options = [])

此方法为您提供了更多控制数字在视图中格式化的方式(也是大多数其他 NumberHelper 方法使用的主要方法)。使用此方法可能看起来像

// Called as NumberHelper
$this->Number->format($value, $options);

// Called as Number
Number::format($value, $options);

$value 参数是要格式化为输出的数字。如果没有提供 $options,则数字 1236.334 将输出为 1,236。请注意,默认精度为零位小数。

$options 参数是此方法真正发挥作用的地方。

  • 如果您传递一个整数,则它将成为函数的精度或位数。

  • 如果您传递一个关联数组,您可以使用以下键

选项

描述

places

要使用的十进制位数,例如 2。

precision

要使用的最大小数位数,例如 2

pattern

用于格式化数字的 ICU 数字模式,例如 #,###.00

locale

用于格式化数字的区域设置名称,例如 “fr_FR”。

before

在渲染的数字之前显示的文本。

after

在渲染的数字之后显示的文本。

示例

// Called as NumberHelper
echo $this->Number->format('123456.7890', [
    'places' => 2,
    'before' => '¥ ',
    'after' => ' !'
]);
// Output '¥ 123,456.79 !'

echo $this->Number->format('123456.7890', [
    'locale' => 'fr_FR'
]);
// Output '123 456,79 !'

// Called as Number
echo Number::format('123456.7890', [
    'places' => 2,
    'before' => '¥ ',
    'after' => ' !'
]);
// Output '¥ 123,456.79 !'

echo Number::format('123456.7890', [
    'locale' => 'fr_FR'
]);
// Output '123 456,79 !'
Cake\View\Helper\NumberHelper::ordinal(mixed $value, array $options = [])

此方法将输出序数。

示例

echo Number::ordinal(1);
// Output '1st'

echo Number::ordinal(2);
// Output '2nd'

echo Number::ordinal(2, [
    'locale' => 'fr_FR'
]);
// Output '2e'

echo Number::ordinal(410);
// Output '410th'

格式差异

Cake\View\Helper\NumberHelper::formatDelta(mixed $value, array $options = [])

此方法将值差异显示为带符号数字

// Called as NumberHelper
$this->Number->formatDelta($value, $options);

// Called as Number
Number::formatDelta($value, $options);

$value 参数是要格式化为输出的数字。如果没有提供 $options,则数字 1236.334 将输出为 1,236。请注意,默认精度为零位小数。

$options 参数接受与 Number::format() 本身相同的键

选项

描述

places

要使用的十进制位数,例如 2。

precision

要使用的最大小数位数,例如 2

locale

用于格式化数字的区域设置名称,例如 “fr_FR”。

before

在渲染的数字之前显示的文本。

after

在渲染的数字之后显示的文本。

示例

// Called as NumberHelper
echo $this->Number->formatDelta('123456.7890', [
    'places' => 2,
    'before' => '[',
    'after' => ']'
]);
// Output '[+123,456.79]'

// Called as Number
echo Number::formatDelta('123456.7890', [
    'places' => 2,
    'before' => '[',
    'after' => ']'
]);
// Output '[+123,456.79]'

警告

所有符号都是 UTF-8。