¿Existe un método único para determinar si un valor de variable es un número, ya que los valores también podrían estar en notación científica (por ejemplo, 5.814e-10)?Perl, ¿cómo determinar si un valor variable es un número?
Respuesta
El módulo de núcleo Scalar::Util
exporta looks_like_number()
, que da acceso a la API de Perl subyacente.
looks_like_number EXPR
devuelve verdadero si el Perl piensa
EXPR
es un número.
gracias! funciona muy bien – Gordon
De perlfaq4: How do I determine whether a scalar is a number/whole/integer/float?
if (/\D/) { print "has nondigits\n" }
if (/^\d+$/) { print "is a whole number\n" }
if (/^-?\d+$/) { print "is an integer\n" }
if (/^[+-]?\d+$/) { print "is a +/- integer\n" }
if (/^-?\d+\.?\d*$/) { print "is a real number\n" }
if (/^-?(?:\d+(?:\.\d*)?|\.\d+)$/) { print "is a decimal number\n" }
if (/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/)
{ print "a C float\n" }
También hay algunos módulos de uso común para la tarea.
Scalar::Util
(distribuido con 5.8) proporciona acceso a la función interna de perl looks_like_number
para determinar si una variable se parece a un número.
Data::Types
exporta funciones que validan tipos de datos utilizando tanto la expresión anterior como otras expresiones regulares.
En tercer lugar, hay Regexp::Common
que tiene expresiones regulares para hacer coincidir varios tipos de números.
Esos tres módulos están disponibles desde el CPAN
También hay String::Numeric y Regexp::Common::number .. se ve muy bien.
Cadena :: Nummeric también tiene un "a comparison with Scalar::Util::looks_like_number()"
Adaptado de una respuesta en How do I tell if a variable has a numeric value in Perl? -
for my $testable (qw(1 5.25 0.001 1.3e8 foo bar 1dd 0))
{
printf("%10s %s a number\n",
$testable,
isa_number($testable) ? "is" : "isn't")
}
sub isa_number {
use warnings FATAL => qw/numeric/;
my $arg = shift;
return unless defined $arg;
eval { $arg + 0; 1 };
}
Tu 'isa_number' piensa que '' 0'' no es un número. –
@ Ven'Tatsu: correcto, por supuesto, gracias. Equilibrado. – Ashley
- 1. ¿Determinar si el valor de JavaScript es un "número entero"?
- 2. Determinar si un valor es un número entero en Python
- 3. Cómo determinar si una cadena es un número en C#
- 4. ¿Cómo detectar si un número dado es un número entero?
- 5. Compruebe si el valor es un número
- 6. ¿Cómo puedo verificar si un valor es un número?
- 7. Compruebe si un valor de scanf es un número?
- 8. ¿Cómo puedo determinar si un hash Perl contiene una asignación de teclas a un valor indefinido?
- 9. Determinar si el atributo CSS es un cierto valor?
- 10. Bash: Probando si una variable es un número entero
- 11. Determinar si un valor es una función en Haskell
- 12. Comprobando si una variable es un número entero en javascript
- 13. ¿Cómo determinar si una clave es una letra o número?
- 14. ¿Cómo puedo determinar si un manejador de archivo Perl es un manejador de lectura o escritura?
- 15. Determinar si un archivo es un duplicado
- 16. Ruby: determine si un número es un número primo
- 17. Pruebe si el valor es un número entero en Sass
- 18. C# ¿Cómo determinar si un número es un múltiplo de otro?
- 19. ¿Cómo puedo determinar si un archivo es un archivo PDF?
- 20. cómo determinar si un carácter es un carácter chino
- 21. ¿Cómo determinar si un tipo es un tipo de colección?
- 22. Compruebe que la variable es un número
- 23. ¿Cómo determinar si la variable es una función en Python?
- 24. ¿Cómo determinar si un descriptor de archivo es buscable?
- 25. cómo determinar la base de un número?
- 26. Cómo determinar si el valor es una fecha en PHP
- 27. determinar si la cadena del valor de la columna comienza con un número
- 28. dado un total, determinar el número de veces que un valor va a entrar en ella
- 29. ¿Cómo determinar si un tipo .NET es una estructura personalizada?
- 30. ¿Cómo saber si un hash Perl es multidimensional?
"¿hay método único" - no, esto es Perl, TMTOWTDI! :) – Quentin
posible duplicado de [¿Cómo puedo saber si una variable tiene un valor numérico en Perl?] (Http://stackoverflow.com/questions/12647/how-do-i-tell-if-a-variable-has -a-numérico-valor-en-perl) – daxim