Bagaimana saya bisa mengonversi data dari string menjadi panjang di C #?
Saya punya data
String strValue[i] ="1100.25";
sekarang saya ingin masuk
long l1;
Bagaimana saya bisa mengonversi data dari string menjadi panjang di C #?
Saya punya data
String strValue[i] ="1100.25";
sekarang saya ingin masuk
long l1;
Jawaban:
Jawaban ini tidak lagi berfungsi, dan saya tidak dapat menemukan yang lebih baik dari jawaban lain (lihat di bawah) yang tercantum di sini. Harap tinjau dan pilih mereka.
Convert.ToInt64("1100.25")
Tanda tangan metode dari MSDN:
public static long ToInt64(
string value
)
Jika Anda ingin mendapatkan bagian bilangan bulat dari bilangan tersebut, Anda harus terlebih dahulu mengubahnya menjadi bilangan mengambang, lalu diubah menjadi panjang.
long l1 = (long)Convert.ToDouble("1100.25");
Anda dapat menggunakan Math
kelas untuk mengumpulkan nomor sesuka Anda, atau hanya memotong ...
FormatException
jika Anda menjalankan ini pada input yang ditentukan.
Anda juga bisa menggunakan long.TryParse
dan 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)
Meskipun contoh yang Anda berikan bukanlah bilangan bulat, jadi saya tidak yakin mengapa Anda menginginkannya sepanjang waktu.
Anda tidak akan dapat mengubahnya secara langsung menjadi panjang karena koma desimal saya pikir Anda harus mengubahnya menjadi desimal dan kemudian mengubahnya menjadi panjang seperti ini:
String strValue[i] = "1100.25";
long l1 = Convert.ToInt64(Convert.ToDecimal(strValue));
semoga ini membantu!
long secara internal direpresentasikan sebagai System.Int64 yang merupakan integer bertanda 64-bit. Nilai yang Anda ambil "1100.25" sebenarnya adalah desimal dan bukan integer sehingga tidak dapat diubah menjadi panjang.
Kamu bisa memakai:
String strValue = "1100.25";
decimal lValue = Convert.ToDecimal(strValue);
untuk mengubahnya menjadi nilai desimal
long l1 = Convert.ToInt64(strValue);
Itu harus dilakukan.
Anda juga dapat melakukannya menggunakan Int64.TryParse
Metode. Ini akan mengembalikan '0' jika itu adalah nilai string apa pun tetapi tidak menghasilkan kesalahan.
Int64 l1;
Int64.TryParse(strValue, out l1);
Anda dapat membuat fungsi konversi Anda sendiri:
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;
}
Itu dapat ditingkatkan lebih lanjut: