![]() |
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| UNIX перспективных И опытных пользователей Эксперт-на-экспертов. Узнайте современные UNIX, UNIX команды, Linux, операционные системы, системы управления, программирование, Shell, Shell скриптов, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
AWK помочь
Привет
На мой файл Есть 4 колонки имеющие размер поля, но я получаю разные суммы, используя ниже своего AWK-F "|" '(A + \u003d $ 1 + $ 2 + $ 3 + $ 4) END (printf ( "% F \ N", A))' файл 1123337200682,226562 AWK 'BEGIN (FS \u003d (ФУСШ \u003d"|"} для (i \u003d 1; I <\u003d Н.Ф.; I + +) (A + \u003d $ I, N + +)) END (printf ( "% F \ N", A))' файл 1123337200684,453613 Спасибо, MR |
|
||||
|
Добро пожаловать в удивительный мир арифметики с плавающей точкой.
Во-первых, AWK используется двойной точности с плавающей точкой для внутреннего представления чисел. Обычно лимит двойных presision 15 цифр. Вы находитесь печати 19 - нужно все из них? Вы можете проверить вашу систему, она может обеспечить более чем 15. Далее путь AWK выполняет те семьи, возможно, добавляет источник проблемы. За $ 1 + $ 2 ..... он, вероятно, является временное хранение ценностей и получение промежуточных сумм. Другой цикл, вероятно, делает простым того, только с одной переменной температуры хранения. Отстойные в представлении чисел увеличивается, как вы шаг через промежуточные значения и суммы. Чем больше промежуточных значений, тем больше возможных ошибок. Другой вопрос заключается в том, что AWK имеет позвонить atof для каждого номера она читает дюйм Фактическое число хранящихся в памяти, не может быть точно представимых в ПС, и, поскольку вы работаете вблизи предела двойной точностью, несколько тысяч небольших ошибок представляет собой изменение порядка целого числа. Это не вина AWK, это связано с образом FP чисел работу. Вы можете попробовать написания сценария до н.э., он обычно делает лучше на больших чисел. Вы также можете попробовать просто C ок с длинным двойным данных. |
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|