8
ตัวระบุความกว้าง Printf เพื่อรักษาความแม่นยำของค่าทศนิยม
มีตัวprintfระบุความกว้างที่สามารถนำไปใช้กับตัวระบุจุดลอยตัวที่จะจัดรูปแบบผลลัพธ์โดยอัตโนมัติเป็นจำนวนหลักสำคัญที่จำเป็นเช่นนั้นเมื่อสแกนสตริงกลับเข้าไปจะได้รับค่าทศนิยมเดิมหรือไม่ ตัวอย่างเช่นสมมติว่าฉันพิมพ์ a floatด้วยความแม่นยำของ2ตำแหน่งทศนิยม: float foobar = 0.9375; printf("%.2f", foobar); // prints out 0.94 เมื่อฉันสแกนผลลัพธ์0.94ฉันไม่มีการรับประกันที่เป็นไปตามมาตรฐานว่าฉันจะได้ค่า0.9375ทศนิยมดั้งเดิมกลับคืนมา (ในตัวอย่างนี้ฉันอาจจะไม่) ฉันต้องการวิธีบอกprintfให้พิมพ์ค่าทศนิยมไปยังจำนวนหลักที่จำเป็นโดยอัตโนมัติเพื่อให้แน่ใจว่าสามารถสแกนกลับไปเป็นค่าเดิมที่ส่งไปให้printfได้ ฉันสามารถใช้มาโครบางตัวfloat.hเพื่อหาค่าความกว้างสูงสุดที่จะส่งผ่านไปprintfได้ แต่มีตัวระบุให้พิมพ์โดยอัตโนมัติตามจำนวนหลักที่มีนัยสำคัญหรือไม่หรืออย่างน้อยก็เป็นความกว้างสูงสุด