将字符串转换为int而不会在开头丢失零

时间:2011-07-07 18:37:01

标签: c# string format int

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

我正在转换。我在开始时输掉了0,我不想要。

Ex:09999变为9999 - 我不想要这个。

我想保持原样。

我该怎么做?

10 个答案:

答案 0 :(得分:29)

myNumber.ToString("D5");

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

答案 1 :(得分:12)

你做不到。 int表示数学整数。数字099999999在数学上完全相同。

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

答案 2 :(得分:8)

如果你想做的事情总是打印5个地方的数字,就像

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

答案 3 :(得分:3)

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

只有当你将它转换回你得到“9999”的字符串时,所述字符串中前导零的存在或不存在都由转换回字符串控制。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

Int值不能有前导

答案 6 :(得分:0)

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

答案 7 :(得分:0)

你不能,但如果你需要将它转换为int并保留零,你可以创建它的副本然后将它转换为int,那么你将有两个版本,一个作为int,一个作为字符串。< / p>

答案 8 :(得分:0)

// 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);

答案 9 :(得分:0)

尽管这是一个旧线程,但这也有帮助:

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