我尝试int.parse,
并转换类将字符串转换为int。
我正在转换。我在开始时输掉了0,我不想要。
Ex:09999变为9999 - 我不想要这个。
我想保持原样。
我该怎么做?
答案 0 :(得分:29)
myNumber.ToString("D5");
//D
表示'十进制',而5是您希望该数字始终为的指定数字位数。这将使用零填充您的值,直到它达到5位数。
答案 1 :(得分:12)
你做不到。 int
表示数学整数。数字09999
和9999
在数学上完全相同。
也许这里有一个不同的问题。你为什么需要这样做?也许有更好的方法来做你想做的事。
答案 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();