Je développe l'application Windows Phone 7 dans Silverlight. Je suis nouveau dans l'application Windows Phone 7. J'ai la valeur longue au format String comme suit
String Am = AmountTextBox.Text.ToString()
AmountTextBox.Text.ToString () dans le code ci-dessus est une valeur longue au format chaîne. Je souhaite stocker une valeur intermédiaire de 15 chiffres dans mon application.
J'ai trouvé le lien suivant pour la conversion.
Puis-je convertir long en int?
Comment dois-je convertir une valeur longue au format chaîne en int? Pouvez-vous s'il vous plaît me fournir un code ou un lien par lequel je peux résoudre le problème ci-dessus? Si je fais quelque chose de mal, alors guide-moi s'il te plaît.
Vous ne pouvez pas stocker un nombre entier de 15 chiffres car la valeur maximale d'un nombre entier est 2 147 483 647.
Quel est le problème avec une valeur long
-?
Vous pouvez utiliser TryParse () pour obtenir la valeur long
- à partir de votre entrée utilisateur:
String Am = AmountTextBox.Text.ToString();
long l;
Int64.TryParse(Am, out l);
Il retournera false
si le texte ne peut pas être converti en long
, son utilisation est donc très sûre.
Sinon, convertir une long
en int
est simple comme bonjour.
int i = (int)yourLongValue;
si vous êtes content de vous débarrasser des MSB et de prendre des LSB.
Utilisez Convert.ToInt32 () . Si la valeur est trop grande pour un int, il générera une OverflowException.
Cette méthode peut prendre toute une gamme de valeurs, y compris Int64 et Strings.
Vous avez un nombre stocké sous la forme string
et vous souhaitez le convertir en type numérique.
Vous ne pouvez pas le convertir en type int
(également appelé Int32
), car, comme le mentionnent les autres réponses, ce type n'a pas une plage suffisante pour stocker la valeur souhaitée.
Au lieu de cela, vous devez convertir la valeur en long
(également appelé Int64
). Le moyen le plus simple et le plus simple de le faire consiste à utiliser la méthode TryParse
, qui convertit une représentation sous forme de chaîne d'un nombre en son équivalent entier signé de 64 bits.
L'avantage d'utiliser cette méthode (au lieu de quelque chose comme Parse
) est qu'elle ne lève pas d'exception si la conversion échoue. Étant donné que les exceptions sont coûteuses, évitez de les lancer sauf si cela est absolument nécessaire. Au lieu de cela, vous spécifiez la chaîne contenant le nombre à convertir en tant que premier argument de la méthode et une valeur out
pour recevoir le nombre converti si la conversion aboutit. La valeur renvoyée est un booléen, indiquant si la conversion a réussi ou non.
Exemple de code:
private void ConvertNumber(string value)
{
Int64 number; // receives the converted numeric value, if conversion succeeds
bool result = Int64.TryParse(value, out number);
if (result)
{
// The return value was True, so the conversion was successful
Console.WriteLine("Converted '{0}' to {1}.", value, number);
}
else
{
// Make sure the string object is not null, for display purposes
if (value == null)
{
value = String.Empty;
}
// The return value was False, so the conversion failed
Console.WriteLine("Attempted conversion of '{0}' failed.", value);
}
}
En C #, int
a 32 bits et long
a 64 bits. Par conséquent, toutes les valeurs de long
ne peuvent pas être int
. Peut-être obtenir un tableau de int
s?
public static int[] ToIntArray(long l)
{
var longBytes = BitConverter.GetBytes(l);
// Get integers from the first and the last 4 bytes of long
return new int[] {
BitConverter.ToInt32(longBytes, 0),
BitConverter.ToInt32(longBytes, 4)
};
}
La valeur maximale de Int32
dans C # est 2 147 483 647, plus courte que les 15 chiffres requis.
Êtes-vous sûr de devoir convertir cette valeur en int? Il semble que vous feriez mieux de stocker la valeur dans une long
ou de la laisser sous la forme String
.
Une valeur Long stocke plus de données qu'une valeur Integer 32. Par conséquent, si vous souhaitez conserver les 15 chiffres, vous ne pouvez pas convertir en un Integer standard.
Mais mis à part le type de données que vous voulez utiliser, la classe Convert devrait vous aider, par exemple, Convert.ToInt64, qui peut faire ce que vous voulez.