32 บิตลอยมี mantissa
นั่นหมายถึงแต่ละหมายเลขแสดงเป็น 1.xxx xxx xxx xxx xxx xxxxx คูณกำลังบางส่วนของ 2 โดยแต่ละ x เป็นเลขฐานสองทั้ง 0 หรือ 1 (ยกเว้นตัวเลขที่มีขนาดเล็กมากน้อยกว่า - พวกเขาเริ่มต้นด้วย 0 แทน 1 แต่ฉันจะไม่สนใจสิ่งต่อไปนี้)2- 126
ดังนั้นในช่วงจากและคุณสามารถแสดงตัวเลขใด ๆ ภายในความแม่นยำของ2ผม2( i + 1 )± 2( i - 24 )
เป็นตัวอย่างสำหรับ , จำนวนที่น้อยที่สุดในช่วงนี้คือ1 จำนวนที่น้อยที่สุดต่อไปคือ23}) หากคุณต้องการที่จะเป็นตัวแทนของคุณจะมีการปัดเศษขึ้นหรือลงสำหรับข้อผิดพลาดของทางใดทางหนึ่งi = 0( 2)0) ⋅ 1 = 1( 2)0) ⋅ ( 1 + 2- 23)1 + 2- 242- 24
In this range: You get accuracy within:
-----------------------------------------------
0.25 - 0.5 2^-26 = 1.490 116 119 384 77 E-08
0.5 - 1 2^-25 = 2.980 232 238 769 53 E-08
1 - 2 2^-24 = 5.960 464 477 539 06 E-08
2 - 4 2^-23 = 1.192 092 895 507 81 E-07
4 - 8 2^-22 = 2.384 185 791 015 62 E-07
8 - 16 2^-21 = 4.768 371 582 031 25 E-07
16 - 32 2^-20 = 9.536 743 164 062 5 E-07
32 - 64 2^-19 = 1.907 348 632 812 5 E-06
64 - 128 2^-18 = 0.000 003 814 697 265 625
128 - 256 2^-17 = 0.000 007 629 394 531 25
256 - 512 2^-16 = 0.000 015 258 789 062 5
512 - 1 024 2^-15 = 0.000 030 517 578 125
1 024 - 2 048 2^-14 = 0.000 061 035 156 25
2 048 - 4 096 2^-13 = 0.000 122 070 312 5
4 096 - 8 192 2^-12 = 0.000 244 140 625
8 192 - 16 384 2^-11 = 0.000 488 281 25
16 384 - 32 768 2^-10 = 0.000 976 562 5
32 768 - 65 536 2^-9 = 0.001 953 125
65 536 - 131 072 2^-8 = 0.003 906 25
131 072 - 262 144 2^-7 = 0.007 812 5
262 144 - 524 288 2^-6 = 0.015 625
524 288 - 1 048 576 2^-5 = 0.031 25
1 048 576 - 2 097 152 2^-4 = 0.062 5
2 097 152 - 4 194 304 2^-3 = 0.125
4 194 304 - 8 388 608 2^-2 = 0.25
8 388 608 - 16 777 216 2^-1 = 0.5
16 777 216 - 33 554 432 2^0 = 1
ดังนั้นหากหน่วยของคุณเป็นเมตรคุณจะเสียความแม่นยำมิลลิเมตรประมาณ 16 484 - 32 768 แบนด์ (ประมาณ 16-33 กม. จากจุดกำเนิด)
โดยทั่วไปเชื่อว่าคุณสามารถหลีกเลี่ยงปัญหานี้ได้ด้วยการใช้หน่วยพื้นฐานที่แตกต่างกัน แต่นั่นไม่จริงเลยเพราะมันมีความแม่นยำสัมพัทธ์ที่สำคัญ
ถ้าเราใช้หน่วยเซนติเมตรเป็นหน่วยของเราเราจะสูญเสียความแม่นยำมิลลิเมตรที่ 1 048 576-2 097 152 แบนด์ (10-21 กม. จากแหล่งกำเนิด)
ถ้าเราใช้เฮกตาร์เป็นหน่วยของเราเราจะสูญเสียความแม่นยำมิลลิเมตรที่ 128-256 แบนด์ (13-26 กม. จากแหล่งกำเนิด)
... ดังนั้นการเปลี่ยนหน่วยคำสั่งขนาดสี่ยังคงจบลงด้วยการสูญเสียความแม่นยำมิลลิเมตรที่ใดที่หนึ่งในช่วงสิบกิโลเมตร ทุกอย่างที่เราเปลี่ยนคือตำแหน่งที่ตรงกับวงนั้น (เนื่องจากความไม่ตรงกันระหว่างเลขฐาน 10 และเลขฐาน 2) ไม่ได้ขยายพื้นที่ของเราอย่างมาก
ความแม่นยำของเกมของคุณจะขึ้นอยู่กับรายละเอียดของการเล่นเกมการจำลองทางฟิสิกส์ขนาดเอนทิตี้ / ระยะการสุ่มการแสดงผลความละเอียด ฯลฯ ดังนั้นจึงเป็นเรื่องยากที่จะกำหนดทางลัดที่แน่นอน มันอาจเป็นการเรนเดอร์ของคุณดูดีจากแหล่งกำเนิด 50 กม. แต่กระสุนของคุณเคลื่อนย้ายผ่านกำแพง หรือคุณอาจพบว่าเกมเล่นได้ดี แต่ทุกอย่างมีการสั่นสะเทือนที่แทบจะสังเกตไม่ได้จากความไม่ถูกต้องในการแปลงรูปกล้อง
หากคุณทราบระดับความแม่นยำที่คุณต้องการ (กล่าวคือมีช่วงของแผนที่ 0.01 หน่วยถึงประมาณ 1 px ที่ระยะการรับชม / ปฏิสัมพันธ์ปกติของคุณและออฟเซตที่เล็กกว่ามองไม่เห็น) คุณสามารถใช้ตารางด้านบนเพื่อค้นหาตำแหน่งที่คุณสูญเสีย ความแม่นยำและถอยหลังคำสั่งขนาดเล็กเพื่อความปลอดภัยในกรณีที่การดำเนินการสูญเสีย
แต่ถ้าคุณคิดเกี่ยวกับระยะทางไกล ๆ มันอาจจะดีกว่าถ้าคุณก้าวข้ามโลกของคุณในขณะที่ผู้เล่นเคลื่อนที่ไปรอบ ๆ คุณเลือกพื้นที่สี่เหลี่ยมจัตุรัสเล็ก ๆ หรือรูปลูกบาศก์แบบอนุรักษ์นิยมรอบ ๆ จุดกำเนิด เมื่อใดก็ตามที่ผู้เล่นเคลื่อนที่นอกภูมิภาคนี้แปลพวกเขาและทุกสิ่งในโลกให้กลับครึ่งหนึ่งของความกว้างของภูมิภาคนี้โดยรักษาผู้เล่นไว้ภายใน เมื่อทุกอย่างเคลื่อนที่ไปด้วยกันผู้เล่นของคุณจะไม่เห็นการเปลี่ยนแปลง ความไม่ถูกต้องยังสามารถเกิดขึ้นได้ในส่วนที่ห่างไกลของโลก แต่โดยทั่วไปแล้วพวกเขาจะสังเกตเห็นได้น้อยกว่าที่เกิดขึ้นภายใต้เท้าของคุณและคุณรับประกันได้ว่าจะมีความแม่นยำสูงอยู่ใกล้กับเครื่องเล่น