2012-06-01 11 views
1

Есть ли способ проверить десятую часть целочисленной переменной, а если она длинная, просто обрезайте ее. Я хав поля в базе данных, которая принимает 3 символ, Lenth равно 3.Проверьте длину целочисленной переменной

Так это можно сделать, как это делается со строкой переменной

пример:

cust_ref = cust_ref.Length > 20 ? cust_ref.Substring(0, 19) : cust_ref; 

Спасибо!

+0

Если у вас есть поле в базе данных, которая хранит целое число, то почему это поле типа символа, а не целое число? Ленький ответ здесь будет «4 байта, а« int »всегда 4 байта». –

ответ

1
cust_ref = cust_ref.ToString().Length > 20 ? Convert.ToInt32(cust_ref.ToString().Substring(0, 19)) : cust_ref; 

или просто использовать

cust_ref = Convert.ToInt32(Convert.ToString(cust_ref).Substring(0, 19)); 
+0

Хорошо, я понял, ключ должен преобразовать переменную в строку .. Спасибо! – CrBruno

+0

Вторая версия работает только в том случае, если значение * always * равно как минимум 19 символам, иначе вы получите 'ArgumentOutOfRangeException'. – Guffa

+0

int -> string -> string -> int :( –

1

Используйте как этот

cust_ref= cust_ref.Tostring().Length > 20 ? Convert.ToInt32(cust_ref.ToString().Substring(0, 19)) : cust_ref; 
+0

Этот код создаст 3 дополнительных неудобства строки, если он выполнит –

1

Nont очень ясно, что вы просите, но столько, сколько я unerstood вы просите :

int a = 1234567890; 

по какой-то причине вы хотите, чтобы сделать его короче, как

int b = MakeShorter(a); 
    //b == 1234 (say) 

Если да, то самое простое решение может быть, преобразовать его в строку, сделал то, что вы уже реализовали и переконвертировать его обратно в междунар.

Если это не то, о чем вы просите, уточните пожалуйста.

+0

. Если он длинный, мне нужно его обрезать, поэтому сначала мне нужно преобразовать его в строку и а затем вернуться к int? – CrBruno

+0

@CrBruno: В ** моем ** мнение это самое простое решение. – Tigran

0

длина Проверка

 length = cust_ref.ToString().Length; 

Удалить дополнительные биты

 if (length > need) 
     { 
      cust_ref =Convert.ToInt32(cust_ref.ToString().Remove(length -(length- need))); 
     } 
0

для этого у вас будет делать некоторые простые питания. как

cust_ref = Convert.ToInt32(Convert.ToString(cust_ref).Substring(0, 19)); 

или и вручную сохранить его в любой переменной и

3

Вам не нужно преобразовать его в строку, чтобы сделать его короче, что может быть сделано численно:

if (num > 999) { 
    num %= 1000; 
} 

Это позволит сократить цифр слева, если вы хотите, чтобы отрезать их от права:

while (num > 999) { 
    num /= 10; 
} 

Если значение может быть отрицательным, а также проверить:

if (num < -99) { 
    num = -(-num % 100); 
} 

или:

while (num < -99) { 
    num = -(-num/10); 
} 
1

преобразование в строку некрасиво способ ее реализации.

Это требует чистого МАТЕМАТИКА Раствора

int CutTheNumber(int number, int maxLen) 
{ 
    var maxSize = (int)Math.Pow(10, maxlen); 
    if(maxSize <= Math.Abs(number)) 
    { 
    number %= maxSize; 
    } 

    return number; 
} 
+0

Нет, он не требует * численного решения. – Guffa

+0

Извините, но я вас не понимаю :( –

+0

Вы сказали, что это * требует * чистого математического решения, но это неправда. Другие решения также работают, это просто вопрос вкуса. – Guffa

14

Самый простой ответ был бы:

//The length would be 3 chars.  
public int myint = 111; 
myint.ToString().Length; 
0

Вы можете попробовать этот код. используйте if else для проверки проверки.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace avaragescore 
{ 
    class Program 
    { 

     static void Main(string[] args) 
     { 
      float quiz; 
      float midterm; 
      float final; 
      float avrg=0; 
     Start: 
      Console.WriteLine("Please enter the Quize Score here"); 
      quiz = float.Parse(Console.ReadLine()); 
      if(quiz > 100) 
      { 
       Console.WriteLine("You have entered wrong score please re-enter"); 
       goto Start; 
      } 
      Start1: 
      Console.WriteLine("Please enter the Midterm Score here"); 
      midterm = float.Parse(Console.ReadLine()); 
      if(midterm > 100) 
      { 
       Console.WriteLine("You have entered wrong score please re- enter"); 
       goto Start1; 
      } 
      Start3: 
      Console.WriteLine("Please enter the Final Score here"); 
      final = float.Parse(Console.ReadLine()); 
      if(final > 100) 
      { 
       Console.WriteLine("You have entered wrong Score Please re-enter"); 
       goto Start3; 
      } 
      avrg = (quiz + midterm + final)/3; 

      if(avrg >= 90) 
      { 
       Console.WriteLine("Your Score is {0} , You got A grade",avrg); 
      } 
      else if (avrg >= 70 && avrg < 90) 
      { 
       Console.WriteLine("Your Score is {0} , You got B grade", avrg); 
      } 
      else if (avrg >= 50 && avrg < 70) 
      { 
       Console.WriteLine("Your Score is {0} , You got C grade", avrg); 
      } 
      else if (avrg < 50) 
      { 
       Console.WriteLine("Yor Score is {0} , You are fail", avrg); 
      } 
      else 
      { 
       Console.WriteLine("You enter invalid Score"); 
      } 
      Console.ReadLine(); 
     } 
    } 
} 
+1

При ответе на вопрос с использованием кода, это хорошая форма, чтобы объяснить, что делает код, и * почему * он отвечает на вопрос афера. Не могли бы вы добавить некоторые из них в свой ответ? – mech

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