Possible Duplicate:
How to determine if a decimal/double is an integer?¿Cuál es una buena manera de verificar si un doble es un número entero en C#?
Tengo una variable de tipo double y quiero comprobar si es un número entero.
Por el momento tengo
public bool CheckIfInteger(double number)
{
return number.ToString().Contains(".") == false;
}
¿hay una manera mejor?
ACTUALIZACIÓN: Lo siento, no me di cuenta de la posibilidad de confusión, por entero me refería a la definición matemática del número entero, es decir, los números naturales junto con los negativos de los números naturales distintos de cero.
Su camino es arriesgado: ¿y si la configuración regional de la máquina tiene "," como separador decimal? Parece que puede elegir entre las respuestas a continuación. :) –
Lo primero que se le viene a la mente con el enfoque actual que utiliza es que podría no tener en cuenta que el separador decimal podría ser diferente según la cultura del hilo actual. Si va a elegir una de las alternativas de las respuestas a continuación, tenga cuidado con cualquier cosa que trate el número de entrada como una cadena antes de darle un resultado ... especialmente si no cuenta para los separadores decimales que no sean "." –
@Shadow: su caso puede ser provisional con 'CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator'. Pero ¿qué pasa con '((decimal)) Int32.MaxValue + 1)'? Es un decimal sin separador decimal – abatishchev