2

.Net 是否有用于百万、十亿等常见数字的内置常量?

编辑:正如已经建议的那样,这是出于可读性的原因,而不是写 1000000 或 1000000000。我知道我可以创建自己的,只是想检查它们在我这样做之前是否已经存在。

4

12 回答 12

23

当然,它们被命名为 1e6、1e9 等... ;-)

于 2009-10-29T15:22:47.617 回答
13

我可以看到您的观点,即像 1000000000 这样的代码中的清单常量可能存在可读性问题“是一亿还是十亿”。但是,我会创建一个适合特定情况的常量,而不是通用常量。例如

#define BANKOFAMERICA_TARP_AMOUNT 1000000000.0; // One billion dollars
于 2009-10-29T15:25:17.730 回答
8

不,一般来说,常量值最适合用于语义超出其值的文字。例如,3.14159 是一个文字,但它也是一个广泛重要的数学值,π(尽管是一个近似值)。

相比之下,像 1,000,000 这样的数字只是一个字面量,除了它的值之外不一定有任何一般含义,因此将其设为内置常量并没有多大价值。然而,在特定的应用或环境中,它可能很重要——也许 1,000,000 是ShippingContainers您的油轮可以容纳的最大数量或类似的东西。那就是你要使用常量的地方。

于 2009-10-29T15:24:00.983 回答
5

为什么你认为百万和十亿是常见的数字?

于 2009-10-29T15:18:46.777 回答
5

不,

有一些常量可用,比如

  • 双.Epsilon
  • 数学.PI

但不是为了亿万。

您可以创建自己的常量

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();
}
于 2009-10-29T15:20:37.693 回答
3

即使有这样的常数,“十亿”这个词也意味着不同的东西,无论你是美国人还是欧洲人。

在北美,十亿等于 1,000,000,000 = 10^9;在欧洲,十亿等于 1,000,000,000,000 = 10^12。(一百万 = 10^9。)

于 2009-10-29T15:28:45.153 回答
2

我不去。

例如,对于适合 int 或 long 的最大和最小数字,有内置常量,但在这些点之间没有任意常量。

于 2009-10-29T15:18:40.260 回答
2

我最喜欢使用的是:

public const float EleventyBillion = 110000000000;
于 2009-10-29T15:31:05.960 回答
1

我认为我们不可能有一个,因为十亿美元(十亿)和英国(以及其他人?)十亿(一百万)之间存在差异

短比例和长比例编号的差异

于 2009-10-29T15:30:46.553 回答
1

有点半开玩笑,但没有什么能阻止你把扩展方法放在int

public static int million(this int i)
{
    return i * 1000000;
}

为了要做

 int approximatePopulationOfUnitedStates = 300.million();

有效代码...

于 2009-10-29T15:43:02.410 回答
1

可以做一些整洁的事情,比如有一个图书馆课

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;

我必须承认,我这样做有时只是为了纯粹的可读性(但是只是在类的顶部有 const,而不是专用的库)。有时数字有类似的东西很有用

// Add one to account for whatever
int countPlus1 = count + 1;

如果您之后多次引用它,它只会使代码更整洁 IMO。也使评论更容易,因为在开始时放一个简短的评论更容易理解为什么你总是向变量添加一个,而不是仅仅查看随机count + 1代码。

于 2009-10-30T11:54:47.390 回答
0

是的

int million = 1000000;
int billion = 1000000000;

就像5,a和一样-1,这些都是常数。

于 2009-10-29T15:23:24.893 回答