Làm cách nào để chuyển đổi dữ liệu từ chuỗi sang dài trong C #?
Tôi có dữ liệu
String strValue[i] ="1100.25";
bây giờ tôi muốn nó trong
long l1;
Làm cách nào để chuyển đổi dữ liệu từ chuỗi sang dài trong C #?
Tôi có dữ liệu
String strValue[i] ="1100.25";
bây giờ tôi muốn nó trong
long l1;
Câu trả lời:
Câu trả lời này không còn hoạt động nữa và tôi không thể nghĩ ra bất cứ điều gì tốt hơn thì các câu trả lời khác (xem bên dưới) được liệt kê ở đây. Vui lòng xem xét và bỏ phiếu cho họ.
Convert.ToInt64("1100.25")
Chữ ký phương thức từ MSDN:
public static long ToInt64(
string value
)
Nếu bạn muốn lấy phần nguyên của số đó, trước tiên bạn phải chuyển nó thành số thực sau đó ép kiểu long.
long l1 = (long)Convert.ToDouble("1100.25");
Bạn có thể sử dụng Math
class để làm tròn số theo ý muốn hoặc chỉ cần cắt bớt ...
FormatException
nếu bạn chạy điều này trên đầu vào được chỉ định.
Bạn cũng có thể sử dụng long.TryParse
và 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)
Mặc dù ví dụ bạn đưa ra không phải là một số nguyên, vì vậy tôi không chắc tại sao bạn muốn nó dài như vậy.
Bạn sẽ không thể chuyển đổi nó trực tiếp thành long vì dấu thập phân, tôi nghĩ bạn nên chuyển nó thành thập phân và sau đó chuyển nó thành dài như thế này:
String strValue[i] = "1100.25";
long l1 = Convert.ToInt64(Convert.ToDecimal(strValue));
hi vọng điêu nay co ich!
long được biểu thị bên trong là System.Int64, là một số nguyên có dấu 64-bit. Giá trị bạn đã lấy "1100,25" thực sự là số thập phân chứ không phải số nguyên do đó không thể chuyển đổi thành giá trị dài.
Bạn có thể dùng:
String strValue = "1100.25";
decimal lValue = Convert.ToDecimal(strValue);
để chuyển nó thành giá trị thập phân
long l1 = Convert.ToInt64(strValue);
Nên làm vậy.
Bạn cũng có thể thực hiện bằng Int64.TryParse
Method. Nó sẽ trả về '0' nếu chúng là bất kỳ giá trị chuỗi nào nhưng không tạo ra lỗi.
Int64 l1;
Int64.TryParse(strValue, out l1);
Bạn có thể tạo hàm chuyển đổi của riêng mình:
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;
}
Nó có thể được cải thiện hơn nữa: