将string转换为int而不丢失开头的零
本文关键字:开头 string 转换 int | 更新日期: 2023-09-27 18:01:34
我尝试了int.parse,
和convert class将字符串转换为int.
当我转换。我漏掉了开头的0,这是我不想要的
示例:09999变成9999 -我不想要这个
我想保持它原来的样子。
我该怎么做呢?
myNumber.ToString("D5");
//D
表示'Decimal',而5是您希望该数字始终保持的指定位数。这将用0填充你的值,直到它达到5位。
不能。int
表示一个数学整数。数字09999
和9999
在数学上是完全相同的数字。
也许这里有一个不同的问题。你为什么要这么做?也许有更好的方法来做你想做的事。
如果你想做一些事情,比如总是以5个位置打印你的数字,它就像
myNumber.ToString().PadLeft(5, '0');
不,int.Parse("09999")
实际上返回0x0000270F。正好32位(因为int
就是这么大),其中18位是前导零(确切地说,一个是符号位,你可以说只有17个前导零)
只有当你将它转换回字符串时,你才能得到"9999",该字符串中前导零的存在与否由转换回字符串控制。
// 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);
你不能。如果您希望它保持这种方式,则必须将值保持为字符串。
整型值不能有前导零
如果您只是转换为int来测试值,请保留原始数据,并在需要前导零点时使用它的字符串值。如果您需要在数学上对整数进行处理后将其填充为零,则必须在输出时使用sprintf或类似的格式。
不能,但是如果你需要将其强制转换为int并保留0,你可以创建它的副本,然后将其强制转换为int,那么你将有两个版本的它,一个是int,一个是string。
虽然这是一个旧的线程,但这也可以帮助:
// convert to big integer
var bigIntBits = BigInteger.Parse(intNumber);
int indexOfOne = intNumber.IndexOf('1');
string backToString = new string('0', indexOfOne) + bigIntBits.ToString();
我也有同样的问题;用if else来解