我试过int.parse,
并将类转换为将字符串转换为int。将字符串转换为int而不会在开始处丢失零
虽然我正在转换。我在开始时输了0,我不想要。
例如:09999变成9999 - 我不想要这个。
我想保持原样。
我该怎么做?
我试过int.parse,
并将类转换为将字符串转换为int。将字符串转换为int而不会在开始处丢失零
虽然我正在转换。我在开始时输了0,我不想要。
例如:09999变成9999 - 我不想要这个。
我想保持原样。
我该怎么做?
你不能。 int
旨在表示数学整数。数字09999
和9999
在数学上完全相同。
也许这里有一个不同的问题。你为什么需要这样做?也许有更好的方法来做你想做的事情。
你不能。如果您希望它保持原样,您将不得不将该值保留为字符串。
不,int.Parse("09999")
实际上返回0x0000270F。正好32位(因为这是多大的int
),其中18个是前导零(准确地说,一个是符号位,你可能会认为只有17个前导零)。
只有当你将它转换回一个你得到“9999”的字符串时,该字符串中前导零的存在与否才会被转换回字符串。
int类型不能有前导零
所有'int'值的一半都有前导零(即零)。 –
呵呵,你是对的! :) –
如果你想要做这样的事情总是与5个地方打印您的号码,它会像
myNumber.ToString().PadLeft(5, '0');
如果你只是转换为int测试值,保留原始数据并在需要领先的zeor时使用它的字符串值。如果您在数学上使用整数后需要使用零填充,则必须在输出时使用sprintf或类似的格式对其进行格式化。
你不能,但如果你需要将它转换为int并保留零,你可以创建它的副本,然后将其转换为int,那么你将有两个版本,一个是int,一个是字符串。
// 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);
在数学上,前导0是无关紧要的。 09999和9999等于九千九百九十九。为什么你必须保持领先的零,如果它基本上是相同的数字? – BoltClock
你想要一个具有前导零的整数表示? – Clayton
这是令人困惑的。这仅用于打印/显示此整数的值吗? – Joe