无法在 C# 中将 long 转换为 int 问题
Cannot convert long to int Issue in C#
在下面的代码中,我想在数字前加 0(即)如果数字是 96333,当我执行它时它应该是 096333 我面临无法将 long 转换为 int.Pls 帮助我解决的问题问题。
public FileDto GenerateBarcodeImage(Int64 BarCodeNumber)
{
//string s = BarCodeNumber.ToString().PadLeft(4, '0');
string result = BarCodeNumber.ToString().PadLeft(4, '0');
int sds = Int64.Parse(result);
return GetBarcodeImage(sds);
}
替换
int sds = Int64.Parse(result);
和
long sds = Int64.Parse(result);
试试这个:
int sds = Int32.Parse(result);
而不是
int sds = Int64.Parse(result);
正如 Mr47 在将数字解析回 Int64 时正确指出的那样,您将丢失左侧的所有零。
long
比 int
更精确。隐式转换只能从低精度到高精度进行,因为没有丢失信息的风险(因为 int
的最小值和最大值可以很容易地包含在 long
中)。
如果你的值可能大于int
的容量,请将sds的类型改为Int64。我想你的函数 GetBarcodeImage
需要一个 Int64
作为参数,如果不是,你可能也想改变它。
如果您的值可以包含在 integer
中,只需更改您的 GenerateBarcodeImage
函数以将 int
作为参数。
仔细考虑将数字转换为较低精度的后果。阅读 story of the first Ariane 5 launch 了解更多详情。
在下面的代码中,我想在数字前加 0(即)如果数字是 96333,当我执行它时它应该是 096333 我面临无法将 long 转换为 int.Pls 帮助我解决的问题问题。
public FileDto GenerateBarcodeImage(Int64 BarCodeNumber)
{
//string s = BarCodeNumber.ToString().PadLeft(4, '0');
string result = BarCodeNumber.ToString().PadLeft(4, '0');
int sds = Int64.Parse(result);
return GetBarcodeImage(sds);
}
替换
int sds = Int64.Parse(result);
和
long sds = Int64.Parse(result);
试试这个:
int sds = Int32.Parse(result);
而不是
int sds = Int64.Parse(result);
正如 Mr47 在将数字解析回 Int64 时正确指出的那样,您将丢失左侧的所有零。
long
比 int
更精确。隐式转换只能从低精度到高精度进行,因为没有丢失信息的风险(因为 int
的最小值和最大值可以很容易地包含在 long
中)。
如果你的值可能大于int
的容量,请将sds的类型改为Int64。我想你的函数 GetBarcodeImage
需要一个 Int64
作为参数,如果不是,你可能也想改变它。
如果您的值可以包含在 integer
中,只需更改您的 GenerateBarcodeImage
函数以将 int
作为参数。
仔细考虑将数字转换为较低精度的后果。阅读 story of the first Ariane 5 launch 了解更多详情。