พอดีเจอปัญหาในการแปลง string to number และ number to string ในภาษา C# ซึ่งไม่แน่ใจว่าภาษาอื่นๆ จะเป็นด้วยไหม จึงอยากขอความรู้จากผู้รู้หน่อยครับ
ตามโค้ดด้านล่างนี้ สงสัยว่าทำไมเวลาใช้ตัวแปรชนิด double จึงได้ทศนิยมตำแหน่งเดียว และพอแปลงเป็น string อีกครั้ง ค่าที่ได้เปลี่ยนไป เพราะอะไรครับ ซึ่งพอใช้ตัวแปรชนิด decimal ก็ปกติ
[code]
string txt = "1234567100300021.234";
double num1 = Convert.ToDouble(txt);
string strNum1 = num1.ToString("####.00");
decimal num2 = Convert.ToDecimal(txt);
string strNum2 = num2.ToString("####.00");
System.Console.WriteLine(txt);
System.Console.WriteLine(num1);
System.Console.WriteLine(strNum1);
System.Console.WriteLine(num2);
System.Console.WriteLine(strNum2);
// Result
//1234567100300021.234
//1234567100300021.2
//1234567100300020.00
//1234567100300021.234
//1234567100300021.23
[/code]
ใน C# ได้แก้ปัญหาไปโดยเลือกใช้ตัวแปรชนิด decimal แทนไปก่อน แต่ก็เจอปัญหานี้ใน formula crystal syntax ด้วยเช่นกัน ซึ่งอันนี้ยังไม่รู้จะแก้ปัญหายังไง
ToText(1234567100300021.234, 2, "");//1234567100300020.00
CStr(1234567100300021.234, 2, "");//1234567100300020.00
มีใครพอให้คำตอบได้บ้างครับ แล้วจะมีวิธีแก้ปัญหายังไงได้บ้าง
ขอบคุณครับ
ปัญหา number to string & string to number
ตามโค้ดด้านล่างนี้ สงสัยว่าทำไมเวลาใช้ตัวแปรชนิด double จึงได้ทศนิยมตำแหน่งเดียว และพอแปลงเป็น string อีกครั้ง ค่าที่ได้เปลี่ยนไป เพราะอะไรครับ ซึ่งพอใช้ตัวแปรชนิด decimal ก็ปกติ
[code]
string txt = "1234567100300021.234";
double num1 = Convert.ToDouble(txt);
string strNum1 = num1.ToString("####.00");
decimal num2 = Convert.ToDecimal(txt);
string strNum2 = num2.ToString("####.00");
System.Console.WriteLine(txt);
System.Console.WriteLine(num1);
System.Console.WriteLine(strNum1);
System.Console.WriteLine(num2);
System.Console.WriteLine(strNum2);
// Result
//1234567100300021.234
//1234567100300021.2
//1234567100300020.00
//1234567100300021.234
//1234567100300021.23
[/code]
ใน C# ได้แก้ปัญหาไปโดยเลือกใช้ตัวแปรชนิด decimal แทนไปก่อน แต่ก็เจอปัญหานี้ใน formula crystal syntax ด้วยเช่นกัน ซึ่งอันนี้ยังไม่รู้จะแก้ปัญหายังไง
ToText(1234567100300021.234, 2, "");//1234567100300020.00
CStr(1234567100300021.234, 2, "");//1234567100300020.00
มีใครพอให้คำตอบได้บ้างครับ แล้วจะมีวิธีแก้ปัญหายังไงได้บ้าง
ขอบคุณครับ