【问题标题】:Which data structure(or type) would be useful for defining the digit amount of a number?哪种数据结构(或类型)可用于定义数字的位数?
【发布时间】:2015-08-26 01:28:50
【问题描述】:

各位程序员们好,

我知道这应该很容易,但我需要定义数字的位数以尝试项目中的所有组合。位数不应受到用户操作的影响,因为位数的变化会导致“索引超出范围”错误。 (是的,我为此使用了数组)

比方说,我必须使用四位数字。

int Nmr=1000;
Nmr--;
Console.Write(Nmr);// The output will be 999 but I need 0999

使用字符串类型和 if 语句可能会导致替代解决方案...

int Nmr=1000;
Nmr--;
string number=Nmr.ToString();
if (Nmr<1000) number="0"+number;
if (Nmr<100) number="00"+number;
if (Nmr<10) number="000"+number;
Console.Write(Nmr); //That gives me 0999

但是,它给我带来了复杂性和不必要的时间损失,这是我不想遇到的。我什至不是在谈论更大的价值。

那么,你有什么建议? 编辑: ToString("0000") 和 PadLeft 方法都很有用。

感谢 Mateus Coutinho Martino 和 Blorgbeard。 =)

【问题讨论】:

  • 调用ToString时可以指定格式:Nmr.ToString("0000");
  • 如果您总是需要前导“0”,只需执行Nmr.PadLeft('0',4)。这将确保您始终至少有 4 个字符,如果没有,它将添加您想要指定长度的字符
  • 另外,您的替代解决方案会为小于 100 的数字添加太多零。您需要一些 else 语句。

标签: c# algorithm math numbers digit


【解决方案1】:

您可以在调用 ToString 时指定格式 - 例如

string number = Nmr.ToString("0000");

请参阅文档:Int32.ToString(string)Custom Numeric Format Strings

【讨论】:

    【解决方案2】:

    好吧,用String类的PadLeft方法...

    int Nmr=1000;    
    Nmr--;    
    Console.Write(Nmr.ToString().PadLeft(4,'0')); //That gives you ever four digits.
    

    或者,如果您更喜欢更好的解释...

    int Nmr=1000;    
    Nmr--;    
    String number = Nmr.ToString();
    Console.Write(number.PadLeft(4,'0')); // four digits again;
    

    【讨论】:

      【解决方案3】:

      “0”自定义格式说明符用作零占位符符号。 这里有一个小想法:

                  double numberS;
      
                  numberS = 123;
                   Console.WriteLine(numberS.ToString("00000"));
                   Console.WriteLine(String.Format("{0:00000}", value));
                   // Displays 00123 
      

      您可以查看https://msdn.microsoft.com/en-us/library/0c899ak8.aspx 了解更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多