Поиск

Форматирование чисел

Хотя ваш калькулятор уже достаточно удобен, есть одна финансовая проблема. Вряд ли вы решите попросить коголибо осуществлять ежемесячные платежи по 1.16666666667, Для создания более подходящего числа для таких плате жей необходимо округлить денежные значения с точностью до цента. Для это го используется функция print f ( ) , которая может распечатывать числа, от форматированные в соответствии с заданными условиями.

Для использования функции print f ( ) необходимо сначала задать формат, а затем сами числа или строку с ними. Например, для печати значения пере менной в форме числа с плавающей точкой с двумя цифрами после нее (в каче стве примера возьмем число 1.02) необходимо написать:

print f ( " % 0 1 . 2 f " , $Amount);

Строка формата "%01.2f" дает команду напечатать слово $Amount с нулем для заполнения дополнительных мест, по крайней мере с одной цифрой слева от десятичной точки и с двумя после нее. Функция print f ( ) используется и для более сложных задач, но приведенного примера достаточно для получе ния допустимых денежных сумм.Хотя ваш калькулятор уже достаточно удобен, есть одна финансовая проблема. Вряд ли вы решите попросить коголибо осуществлять ежемесячные платежи по 1.16666666667, Для создания более подходящего числа для таких плате жей необходимо округлить денежные значения с точностью до цента. Для это го используется функция print f ( ) , которая может распечатывать числа, от форматированные в соответствии с заданными условиями.

Для использования функции print f ( ) необходимо сначала задать формат, а затем сами числа или строку с ними. Например, для печати значения пере менной в форме числа с плавающей точкой с двумя цифрами после нее (в каче стве примера возьмем число 1.02) необходимо написать:

print f ( " % 0 1 . 2 f " , $Amount);

Строка формата "%01.2f" дает команду напечатать слово $Amount с нулем для заполнения дополнительных мест, по крайней мере с одной цифрой слева от десятичной точки и с двумя после нее. Функция print f ( ) используется и для более сложных задач, но приведенного примера достаточно для получе ния допустимых денежных сумм.

Использование функции printf
  1. Откройте файл numbers.php в текстовом редакторе.
  2. Измените строку 17 следующим образом:
  3. print ("The total with tax, minus your $$Discount, comes to $");
    printf ( " % 0 1 . 2 f " , $TotalCost};

    При использовании функции форматной печати printf ( ) стоит отделять эту строку от обычных команд print ( ) , потому что способ ее вызова несколь ко отличается.

  4. Измените строку 18 следующим образом:
print ( " . n<P>You may purchase the widget(s) in 12 monthly
—installments of $ " ) ;
printf ("%01.2f", $Payments);
print (" each.n<P>");

Сделайте с этой строкой то же, что со строкой 17. Из одной строки полу чится три, но результат будет выглядеть привлекательнее.

Сохраните файл (листинг 4.2), загрузите его на сервер и протестируйте в браузере (рис).

Листинг 4.2 т Функция print ( ) напечатает числа, отформатированные в со ответствии с заданными условиями.

1 <HTML>
2 <HEAD>
3 <TITLE>Using Numbers</TITLE>
4 </HEAD>
5 <BODY>
6 <?php
7 /* Переменная $Quantity должна быть передана в эту страницу из формы.
.$Discount необязательна. */
8 $Cost = 2000.00;
9 $Тах = 0.05;
10 $TotalCost = $Cost * $Quantity;
11 $Тах = $Тах + 1; // Налог ($Тах) 1.06.
12 $TotalCost = $TotalCost $Discount;
13 $TotalCost = $TotalCost * $Tax;
14 $Payments = $TotalCost / 12;
15 // Печать результатов.
16 print ("You requested to purchase $Quantity widget(s) at $$Cost
each.n<P>");
17 print ("The total with tax, minus your $$Discount, comes to $");
18 printf ("%01.2f", $TotalCost);
19 print (" n<P>You may purchase the widget(s)
in 12 monthly installments of $");
20 printf ("%01.2f", $Payments);
21 print (" each.n<P>");
22 ?>
23 </BODY>
24 </HTML>

Функции sprint f ( ) и print f ( ) аналогичны. Отличаются они тем, что первая сразу посылает результаты в браузер, а функция sprint f () помещает результи рующую строку в переменную, не распечатывая ее:

$Amount = sprintf ( " % 0 1 . 2 f " , $Amount);