П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 4072 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6722 раз(а).

Учебник HTML.
Просмотров 3693 раз(а).

Руководство по PHP5.
Просмотров 5966 раз(а).

Хостинг через призму DNS.
Просмотров 4773 раз(а).

Подборка текстов стандартных документов.
Просмотров 56218 раз(а).

Учебник PHP - Самоучитель
Просмотров 3665 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 8250 раз(а).

Внешние атаки...
Просмотров 4517 раз(а).

Учебник PHP.
Просмотров 3154 раз(а).

SSI в примерах.
Просмотров 161 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Руководство пользователя для GNU Awk

7. Выражения

7.4 Преобразования цепочек и чисел

Цепочки преобразуются в числа и числа преобразуются в цепочки, если этого требует контекст awk-программы. Например, если значение или foo или bar в выражении `foo + bar' окажется цепочкой, оно превращается в число перед выполнением сложения. Если численные значения встречаются при конкатенации цепочек, они превращаются в цепочки.

Рассмотрим следующее:

two = 2; three = 3 print (two three) + 4

Это печатает значение (численное) 27. Численные значения переменных two и three превращаются в цепочки и сцепляются вместе, а цепочка-результат опять преобразуется в число 23, к которому добавляется 4.

Если по какой-то причине нужно принудить число превратиться в цепочку, можно сцепить пустую цепочку "" с этим числом. Чтобы превратить цепочку в число нужно прибавить ноль к этой цепочке.

Цепочка превращается в число при интерпретации любого численного префикса как записи числа: "2.5" превращается в 2.5, "1e3" превращается в 1000, а "25fix" получает численное значение 25. Цепочки, которые нельзя интерпретировать как правильные числа, превращаются в 0. Точные правила, по которым числа превращаются в цепочки, определяются встроенной awk-переменной CONVFMT (см. главу 10 [Встроенные переменные], стр. 115).

Числа преобразуются с помощью функции sprintf (см. раздел 12.3 [Встроенные функции для действий с цепочками], стр. 137) и с CONVFMT как указателем формата. CONVFMT по умолчанию имеет значение "%.6g", которое печатает числа по крайней мере с 6 значащими цифрами. Для некоторых приложений требуется изменять ее для получения большей точности. Двойная точность на большинстве современных машин соответствует 16 или 17 десятичным цифрам. Странные результаты могут получиться, если CONVFMT получит значение, которое не помогает sprintf форматировать правильно числа с плавающей точкой. Например, если вы опустите `%' в формате, все числа будут выдаваться одной и той же постоянной цепочкой. Но если число целое, то результат преобразования будет всегда целым, независимо от значения CONVFMT.

В таком фрагменте кода:

CONVFMT = "%2.2f" a = 12 b = a ""

b получит значение  "12", а не "12.00" (d.c.).

До введения стандарта POSIX, awk предусматривало значение OFMT для преобразования чисел в цепочки. OFMT специфицирует выходной формат для печати чисел оператором print. CONVFMT было введено для отделения семантики преобразования от семантики печати. И CONVFMT и OFMT имеют по умолчанию значение "%.6g". В подавляющем большинстве случаев старые awk-программы не изменят своего поведения. Однако, такое использование OFMT нужно держать в памяти, если вы переносите вашу программу на другую реализацию awk; мы рекомендуем вместо изменения программы переносить сам gawk! См. раздел 6.1 [Оператор print], стр. 61, для полной информации об операторе print.

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru