【问题标题】:Converting string to int without losing the zero in the beginning将字符串转换为 int 而不会丢失开头的零
【发布时间】:2011-09-30 17:20:23
【问题描述】:

我尝试int.parse, 和转换类将字符串转换为 int。

当我正在转换时。我一开始就输掉了我不想要的 0。

例如:09999 变成 9999 - 我不想要这个。

我想保持原样。

我该怎么做?

【问题讨论】:

  • 在数学上,前导 0 是微不足道的。 09999和9999同样是九千,九百九十九。如果它本质上是相同的数字,为什么还要保留前导零?
  • 您想要一个带有前导零的整数表示?
  • 这令人困惑。这仅用于打印/显示此整数的值吗?
  • 不要将其转换为int
  • 你可以计算字符串的长度,然后转换为 int,用它做你想做的事,然后返回到 String,然后在它的开头添加零,直到它的长度与它的长度相同以前。

标签: c# string format int


【解决方案1】:
myNumber.ToString("D5");

//D 表示“十进制”,5 是您希望数字始终为指定位数。这将用零填充您的值,直到达到 5 位数。

【讨论】:

  • 您实际上是唯一回答这个问题的人。有时人们只是想以特定的方式格式化一些东西!
  • @DanCallahan 感谢您实际回答这个问题,这正是我所需要的。
【解决方案2】:

你不能。 int 用于表示数学整数。数字099999999 在数学上是完全相同的数字。

也许这里有一个不同的问题。为什么需要这样做?也许有更好的方法来做你想做的事。

【讨论】:

    【解决方案3】:

    如果你想做一些事情,比如总是用 5 个位置打印你的号码,就像

    myNumber.ToString().PadLeft(5, '0');
    

    【讨论】:

      【解决方案4】:

      不,int.Parse("09999") 实际上返回 0x0000270F。正好 32 位(因为 int 有多大),其中 18 个是前导零(准确地说,一个是符号位,你可以说只有 17 个前导零)。

      只有当您将其转换回字符串时,您才会得到“9999”,该字符串中前导零的存在与否由转换回字符串来控制。

      【讨论】:

        【解决方案5】:

        你不能。如果您希望它保持这种状态,则必须将值保持为字符串。

        【讨论】:

          【解决方案6】:

          Int 值不能有前导零

          【讨论】:

          • 所有int 值中有一半确实有前导零(即零位)。
          【解决方案7】:

          如果您只是转换为 int 来测试值,请保留原始数据并在需要前导 zeor 时使用它的字符串值。如果您要求整数在对其进行数学运算后填充为零,则无论何时输出它都必须使用 sprintf 等对其进行格式化。

          【讨论】:

            【解决方案8】:

            你不能,但是如果你需要将它转换为 int 并保留零,你可以创建它的一个副本,然后将它转换为 int,那么你将拥有它的两个版本,一个是 int,一个是 string。

            【讨论】:

              【解决方案9】:
              // For our requirement that new ID's should be of same length as old ID's.
              string strID = "002017";
              int number = int.Parse(strID);
              string newID = (++number).ToString("D" + strID.Length);
              

              【讨论】:

                【解决方案10】:

                虽然这是一个旧线程,但这也可以提供帮助:

                // convert to big integer
                var bigIntBits = BigInteger.Parse(intNumber);
                int indexOfOne = intNumber.IndexOf('1');            
                string backToString = new string('0', indexOfOne) + bigIntBits.ToString();    
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-08-03
                  • 2011-05-26
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多