ฉันจะแปลงข้อมูลจาก string เป็น long ใน C # ได้อย่างไร
ฉันมีข้อมูล
String strValue[i] ="1100.25";
ตอนนี้ฉันต้องการมัน
long l1;
ฉันจะแปลงข้อมูลจาก string เป็น long ใน C # ได้อย่างไร
ฉันมีข้อมูล
String strValue[i] ="1100.25";
ตอนนี้ฉันต้องการมัน
long l1;
คำตอบ:
คำตอบนี้ใช้ไม่ได้อีกต่อไปและฉันไม่สามารถหาอะไรที่ดีไปกว่าคำตอบอื่น ๆ ได้ (ดูด้านล่าง) ที่แสดงไว้ที่นี่ โปรดตรวจสอบและโหวตให้คะแนน
Convert.ToInt64("1100.25")
ลายเซ็นวิธีจาก MSDN:
public static long ToInt64(
string value
)
หากคุณต้องการรับส่วนจำนวนเต็มของจำนวนนั้นก่อนอื่นคุณต้องแปลงเป็นตัวเลขลอยตัวจากนั้นจึงร่ายยาว
long l1 = (long)Convert.ToDouble("1100.25");
คุณสามารถใช้Math
คลาสเพื่อปัดเศษจำนวนตามที่คุณต้องการหรือเพียงแค่ตัดทอน ...
FormatException
ถ้าคุณเรียกใช้สิ่งนี้กับอินพุตที่ระบุ
คุณยังสามารถใช้long.TryParse
และ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)
แม้ว่าตัวอย่างที่คุณให้มาจะไม่ใช่จำนวนเต็ม แต่ฉันก็ไม่แน่ใจว่าทำไมคุณถึงต้องการให้มันยาว
คุณจะไม่สามารถแปลงเป็น long ได้โดยตรงเนื่องจากจุดทศนิยมฉันคิดว่าคุณควรแปลงเป็นทศนิยมแล้วแปลงเป็นแบบยาวดังนี้:
String strValue[i] = "1100.25";
long l1 = Convert.ToInt64(Convert.ToDecimal(strValue));
หวังว่านี่จะช่วยได้!
long จะแสดงภายในเป็น System.Int64 ซึ่งเป็นจำนวนเต็ม 64 บิตที่ลงชื่อ ค่าที่คุณได้รับ "1100.25" เป็นทศนิยมและไม่ใช่จำนวนเต็มดังนั้นจึงไม่สามารถแปลงเป็น long ได้
คุณสามารถใช้ได้:
String strValue = "1100.25";
decimal lValue = Convert.ToDecimal(strValue);
เพื่อแปลงเป็นค่าทศนิยม
long l1 = Convert.ToInt64(strValue);
ที่ควรทำ
คุณยังสามารถทำได้โดยใช้Int64.TryParse
วิธีการ มันจะคืนค่า '0' หากเป็นค่าสตริงใด ๆ แต่ไม่ได้สร้างข้อผิดพลาด
Int64 l1;
Int64.TryParse(strValue, out l1);
คุณสามารถสร้างฟังก์ชันการแปลงของคุณเอง:
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;
}
สามารถปรับปรุงเพิ่มเติมได้: