Есть ли в .Net какие-либо встроенные константы для общих чисел, таких как миллион, миллиард и т. д.?
Вопрос
Есть ли в .Net какие-либо встроенные константы для общих чисел, таких как миллион, миллиард и т. д.?
РЕДАКТИРОВАТЬ:Как предполагалось, это было сделано для удобства чтения, а не для написания 1000000 или 1000000000.Я знаю, что могу создать свои собственные, просто хотел убедиться, что их еще не существовало до того, как я это сделал.
Решение
Я вижу вашу точку зрения, когда константа манифеста в коде, подобном 1000000000, может иметь проблемы с читабельностью "это сто миллионов или миллиард". Однако я бы создал константу, которая бы соответствовала конкретной ситуации, а не общей константе. Например,
#define BANKOFAMERICA_TARP_AMOUNT 1000000000.0; // One billion dollars
Другие советы
Конечно, они названы 1e6, 1e9 и т. д.; -)
Нет.В общем, константные значения лучше всего использовать для литералов, семантика которых выходит за пределы их значений.Например, 3,14159 — это литерал, но это также очень важное математическое значение π (хотя и приближенное).
Для сравнения, число вроде 1 000 000 является просто литералом и не обязательно имеет какое-либо общее значение, кроме своего значения, поэтому нет особого смысла делать его встроенной константой.Однако в конкретном приложении или контексте это может быть важно — возможно, 1 000 000 — это максимальное количество ShippingContainers
ваш танкер может держать или что-то подобное.Вот где вы бы использовали константу.
Почему, по вашему мнению, миллионы и миллиарды являются общими числами?
Нет,
Есть несколько постоянных доступных, например
- двойной.Эпсилон
- Матем.ПИ
Но не за миллионы и миллиарды.
Вы можете создавать свои собственные константы
public const int OneMillion = 1000000;
Я предполагаю, что вы хотите преобразовать число вроде int value = 1000000
в естественную строку, например string value = "1 million"
.
По умолчанию этого не существует в .NET, но его можно легко закодировать или, я полагаю, вы можете найти такой код в Google.
Например, вы можете создать метод расширения для int
которые преобразуют число в строку человеческого естественного языка: (это дешевый код, взятый из головы)
public static string ToNaturalString(this int value)
{
if (value == 1000000)
return "1 million";
else
return value.ToString();
}
Даже если бы существовала такая константа, слово "миллиард" означает разные вещи, будь вы американец или европеец.
В Северной Америке миллиард равен 1 000 000 000 = 10 ^ 9; в Европе миллиард равен 1 000 000 000 000 = 10 ^ 12. (Миллиард = 10 ^ 9.)
Я иду с нет.
Есть встроенные константы для наибольшего и наименьшего числа, которые, например, поместятся в int или long, но между этими точками нет произвольных констант.
Мое любимое использование:
public const float EleventyBillion = 110000000000;
Я не думаю, что мы могли бы иметь его на том основании, что существует разница между миллиардом США (сто тысяч миллионов) и британским (и другими?) миллиардом (один миллион миллионов)
Немного насмешливо, но ничто не мешает вам добавить методы расширения в int
:
public static int million(this int i)
{
return i * 1000000;
}
чтобы сделать
int approximatePopulationOfUnitedStates = 300.million();
действительный код ...
мог бы сделать что-то аккуратное, например, иметь класс библиотеки
public class One
{
public const int Thousand = 1000;
public const int Million = Thousand * Thousand;
public const int Billion = Million * Million;
...
}
Тогда, когда вы собираетесь использовать его, он выглядит немного аккуратнее
int myNumber = 72 * One.Million;
Должен признать, что я делаю это иногда просто для удобства чтения (однако у него есть константы в начале класса, а не выделенная библиотека). Иногда для чисел полезно иметь что-то вроде
// Add one to account for whatever
int countPlus1 = count + 1;
если вы ссылаетесь на него кучу раз после этого, он просто делает код немного лучше IMO. Это также облегчает комментирование, поскольку в начале легче поместить короткий комментарий, чтобы понять, почему вы добавляете его в переменную все время, чем просто видеть случайный код count + 1
.
Да
int million = 1000000;
int billion = 1000000000;
Как 5
, a
, и -1
, это константы.