C # 'da verileri dizeden uzuna nasıl dönüştürebilirim?
Verilerim var
String strValue[i] ="1100.25";
şimdi onu istiyorum
long l1;
C # 'da verileri dizeden uzuna nasıl dönüştürebilirim?
Verilerim var
String strValue[i] ="1100.25";
şimdi onu istiyorum
long l1;
Yanıtlar:
Bu cevap artık işe yaramıyor ve burada listelenen diğer cevaplardan (aşağıya bakın) daha iyi bir şey bulamıyorum. Lütfen bunları inceleyin ve olumlu oy verin.
Convert.ToInt64("1100.25")
MSDN'den yöntem imzası:
public static long ToInt64(
string value
)
Bu sayının tamsayı kısmını elde etmek istiyorsanız, önce onu kayan bir sayıya dönüştürmeli ve ardından uzun çevirmelisiniz.
long l1 = (long)Convert.ToDouble("1100.25");
Math
Sayıyı istediğiniz gibi yuvarlamak için sınıfı kullanabilirsiniz veya sadece kısaltabilirsiniz ...
FormatException
belirtilen girişte çalıştırırsanız bu size verecektir .
Ayrıca long.TryParse
ve kullanabilirsiniz long.Parse
.
long l1;
l1 = long.Parse("1100.25");
//or
long.TryParse("1100.25", out l1);
http://msdn.microsoft.com/en-us/library/system.convert.aspx
l1 = Convert.ToInt64(strValue)
Verdiğiniz örnek bir tamsayı olmasa da, bu yüzden neden uzun olmasını istediğinizden emin değilim.
Ondalık noktası nedeniyle onu doğrudan uzuna çeviremezsiniz, bence onu ondalık sayıya çevirmeli ve daha sonra uzun bir şeye dönüştürmelisiniz:
String strValue[i] = "1100.25";
long l1 = Convert.ToInt64(Convert.ToDecimal(strValue));
Bu yardımcı olur umarım!
long, dahili olarak 64 bitlik işaretli bir tamsayı olan System.Int64 olarak temsil edilir. "1100.25" olarak aldığınız değer aslında ondalıktır ve tamsayı değildir, bu nedenle uzun bir değere dönüştürülemez.
Kullanabilirsiniz:
String strValue = "1100.25";
decimal lValue = Convert.ToDecimal(strValue);
ondalık değere dönüştürmek için
long l1 = Convert.ToInt64(strValue);
Bunu yapmalı.
Int64.TryParse
Yöntem kullanarak da yapabilirsiniz . Herhangi bir dize değeriyse, ancak bir hata oluşturmadıysa '0' döndürür.
Int64 l1;
Int64.TryParse(strValue, out l1);
Kendi dönüştürme işlevinizi oluşturabilirsiniz:
static long ToLong(string lNumber)
{
if (string.IsNullOrEmpty(lNumber))
throw new Exception("Not a number!");
char[] chars = lNumber.ToCharArray();
long result = 0;
bool isNegative = lNumber[0] == '-';
if (isNegative && lNumber.Length == 1)
throw new Exception("- Is not a number!");
for (int i = (isNegative ? 1:0); i < lNumber.Length; i++)
{
if (!Char.IsDigit(chars[i]))
{
if (chars[i] == '.' && i < lNumber.Length - 1 && Char.IsDigit(chars[i+1]))
{
var firstDigit = chars[i + 1] - 48;
return (isNegative ? -1L:1L) * (result + ((firstDigit < 5) ? 0L : 1L));
}
throw new InvalidCastException($" {lNumber} is not a valid number!");
}
result = result * 10 + ((long)chars[i] - 48L);
}
return (isNegative ? -1L:1L) * result;
}
Daha da geliştirilebilir: