Conversiones de Cadenas y Números - AWK

Las cadenas son convertidas a números, y los números a cadenas, si el contexto del programa awk lo requiere. Por ejemplo, si el valor de la variable foo o la variable bar en la expresión foo + bar es una cadena, dicho valor es convertido a número antes de que se realice la suma. Si aparecen valores numéricos en una concatenación de cadenas, son convertidos a cadenas. Considere esto:

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

Esto imprime eventualmente el valor (numérico) 27. Los valores numéricos de las variables two y three son convertidos a cadenas y concatenados juntos, y el resultado de la concatenación se convierte a número, resultando el número 23, al cual se le añade el número 4.

Si ,por alguna razón, necesitas forzar la conversión de un número a cadena, concaténa la cadena nula con dicho número. Para forzar que una cadena sea convertida a número, súmale cero a esa cadena.

Las cadenas son convertidas a números mediante su interpretación como números: "2.5" se convierte en 2.5, y "1e3" se convierte en 1000 (notación científica). Las cadenas que no pueden ser interpretadas como números válidos son convertidas a cero.

La forma exacta que se usa para convertir números en cadenas es controlada por la variable implícita OFMT.

La manera exacta en la que los números son convertidos en cadenas está controlada por la variable implícita de awk OFMT . Los números son convertidos usando una versión especial de la función sprintf con OFMT como especificador de formato.

El valor por defecto de OFMT es "%.6g", el cual imprime un valor con al menos seis dígitos significativos. Para algunas aplicaciones querrás cambiar este valor para obtener una precisión mayor. “Double precision” en la mayoría de las máquinas modernas te da 16 o 17 dígitos decimales de precisión.

Podrían darse resultados extraños si le das a OFMT un valor o cadena especificadora de formato que no le indique correctamente a sprintf como formatear números en punto flotante de una forma correcta. Por ejemplo, si olvidas el ‘%’ en el formato, todos los números serán convertidos a la misma cadena constante.















Publicar un comentario

0 Comentarios