The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

Go Back   O UNIX e Linux Forum > Top Fóruns > UNIX & avançada para usuários experientes
.
google unix.com



UNIX & avançada para usuários experientes Especialista-a-Expert. Saiba avançado UNIX, comandos UNIX, Linux, Sistemas Operativos, Administração de Sistemas, Programação, Shell, shell scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD.

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 07-17-2008
mohan705 mohan705 is offline
Usuário
  
 

Join Date: Feb 2007
Lugares: 134
awk ajudar

Oi

No meu arquivo existem 4 colunas tendo montante campos, mas estou recebendo quantias diferentes usando a seguir a um



awk-F "|" '(a + \u003d $ 1 + $ 2 + $ 3 + $ 4) END (printf ( "% f \ n", a))' arquivo

1123337200682,226562

awk 'BEGIN (FS \u003d OFS \u003d"|"} (for (i \u003d 1, i <\u003d NF; i + +) (a + \u003d $ i; n + +)) END (printf ( "% f \ n", a))' arquivo

1123337200684,453613



Obrigado,
MR
  #2 (permalink)  
Old 07-17-2008
jim McNAMARA jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Localização: NM
Mensagens: 5.763
Bem-vindo ao maravilhoso mundo da aritmética de ponto flutuante.

Em primeiro lugar, awk usa ponto flutuante de precisão dupla representação interna de números.
O costume da dupla presision limite é de 15 dígitos. Você está imprimindo 19 - você precisa fazer todas elas? Você pode verificar o seu sistema, ela pode fornecer mais de 15.

Em seguida, a forma como awk está realizando esses fp acrescenta é possivelmente a fonte do problema.
Por US $ 1 + $ 2 ..... provavelmente é armazenar temporariamente valores intermédios e recebendo quantias.
O outro ciclo provavelmente não uma simples adição, apenas com uma temperatura de armazenamento variável. Slop na representação de números aumenta à medida que você passar por intermédio valores e importâncias. Quanto mais valores intermédios, o mais possível erro.

A outra questão é que tem a chamada atof awk para cada número que lê polegadas O número real armazenado na memória pode não ser exactamente representable na FP, e uma vez que você está trabalhando perto do limite de precisão dupla, a alguns milhares de pequenos erros representa uma mudança na forma de um número inteiro.

Não é culpa do awk, que tem a ver com a maneira como números fp trabalho.

Você pode tentar escrever um script BC, que, geralmente, faz melhor em grandes números. Você também pode tentar uma simples C app com longas dupla datatypes.
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 09:13.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0