Есть ли в .Net какие-либо встроенные константы для общих чисел, таких как миллион, миллиард и т. д.?

StackOverflow https://stackoverflow.com/questions/1644468

  •  10-07-2019
  •  | 
  •  

Вопрос

Есть ли в .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, это константы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top