move_and_collide() don't produce exact positions?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By bli00

Using move_and_collide on a StaticBody2D inside _physics_process in a empty space (no other physics objects, areas, or custom physics materials). I’m seeing very imprecise resulting positions after move_and_collide. i.e. the following:

func _physics_process(_delta):
	print("position before: ", position)
	print("collision: ", move_and_collide(Vector2(1, 0)))
	print("position after: ", position)

always prints something like this:

position before: (0, 0)
collision: <Object#null>
position after: (1.0747, 0)

Instead of (1.0747, 0), I’m expecting (1, 0). Why does this happen? And is there a way around it?