2015-04-02 3 views
0

В приведенном ниже коде я хочу добавить 0 перед номером (то есть), если число равно 96333, оно должно быть 096333, когда я выполняю его. Я сталкиваюсь с проблемой, не могу долго конвертировать в int.Pls помогите мне решить проблему.Невозможно преобразовать long в int Проблема в C#

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); 
    } 
+0

Какое исключение выбрасывается? – Dai

+0

'Int64.Parse (« 096333 »)' вернет вам '96333', вы потеряете все ноль слева, чтобы использовать преобразование – Satpal

+2

. Разбираясь на Int64, вы теряете все нули слева. Это просто форматирование, не отображающее фактическое целочисленное значение. – Mr47

ответ

0

заменить

int sds = Int64.Parse(result); 

с

long sds = Int64.Parse(result); 
+0

Или 'int sds = Int32.Parse (result)' – Jonny

0

Попробуйте это:

int sds = Int32.Parse(result); 

вместо

int sds = Int64.Parse(result); 

Как правильно указано Mr47, когда вы обрабатываете число до Int64, вы потеряете все нули влево.

0

long более точный, чем int. Неявный литой может быть сделан только с меньшей до большей точности, поскольку нет риска потери информации (поскольку наименьшие и самые большие значения int могут быть легко заключены в long).

Если ваше значение может быть больше емкости int, измените тип sds на Int64. Я полагаю, что ваша функция GetBarcodeImage принимает параметр Int64 в качестве параметра, если вы не можете изменить это тоже.

Если ваше значение может содержаться в integer, juste измените вашу функцию GenerateBarcodeImage на значение и int в качестве параметра.

Подумайте о последствиях литья числа для более низкой точности. Прочтите story of the first Ariane 5 launch для более подробной информации.

Смежные вопросы