มันไม่ง่ายอย่างนี้ถ้าอินพุตเป็นสตริงหรือไม่? คุณสามารถใช้หนึ่งในเหล่านี้:
string.Format("{0:G29}", decimal.Parse("2.0044"))
decimal.Parse("2.0044").ToString("G29")
2.0m.ToString("G29")
สิ่งนี้ควรใช้กับอินพุตทั้งหมด
อัปเดตตรวจสอบรูปแบบตัวเลขมาตรฐานฉันต้องตั้งค่าตัวระบุความแม่นยำเป็น 29 อย่างชัดเจนเนื่องจากเอกสารระบุอย่างชัดเจน:
อย่างไรก็ตามถ้าตัวเลขเป็นทศนิยมและตัวระบุความแม่นยำถูกละเว้นเครื่องหมายจุดคงที่จะใช้เสมอและเลขศูนย์ต่อท้ายจะถูกเก็บไว้
อัพเดท Konrad ชี้ให้เห็นในความคิดเห็น:
ระวังค่าเช่น 0.000001 รูปแบบ G29 จะนำเสนอด้วยวิธีที่สั้นที่สุดเท่าที่จะเป็นไปได้ดังนั้นจึงจะเปลี่ยนเป็นสัญลักษณ์แบบเอ็กซ์โปเนนเชียล string.Format("{0:G29}", decimal.Parse("0.00000001",System.Globalization.CultureInfo.GetCultureInfo("en-US")))
จะให้ผลลัพธ์เป็น "1E-08"