Possible Duplicate:
How to determine if a decimal/double is an integer?Что такое хороший способ проверить, является ли double целым числом на C#?
У меня есть переменная типа double, и я хочу проверить, является ли это целым числом.
На данный момент у меня
public bool CheckIfInteger(double number)
{
return number.ToString().Contains(".") == false;
}
Есть ли лучший способ?
ОБНОВЛЕНИЕ: Извините, я не осознавал потенциал путаницы, целым числом я имел в виду математическое определение целого числа, то есть натуральные числа вместе с отрицаниями ненулевых натуральных чисел.
Ваш способ рискован: что, если в региональных настройках машины есть «,» как разделитель десятичных чисел? Похоже, вы можете выбрать один из ответов ниже. :) –
Первое, что приходит в голову с использованием текущего подхода, который вы используете, состоит в том, что он не может учитывать, что разделитель десятичных чисел может быть различным в зависимости от текущей культуры потоков. Если вы собираетесь выбрать один из альтернатив из приведенных ниже ответов, будьте внимательны ко всему, что относится к входному номеру в виде строки, прежде чем дать вам результат ... особенно если он не учитывает десятичные разделители, отличные от «.». –
@Shadow: Вы можете обходиться с помощью 'CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator'. Но как насчет '((десятичный)) Int32.MaxValue + 1)'? Это десятичное без десятичного разделителя. – abatishchev