SampleHeight vs GetHeight?

Why terrain.SampleHeight and terrain.terrainData.GetHeight returning diferent results?
Hi i work with terrain (placing Object on it) and when i work with height of terrain a discover that these two method returnig diferent result (and i cant find out why).

 float height = terrain.SampleHeight(new Vector3((int)position.x, 0, (int)position.y));
 float height2 = terrain.terrainData.GetHeight((int)position.x,(int)position.y);
 Debug.Log(height.ToString() + ":" + height2.ToString());

(retype to int just for purpose of test) and result are guite interesting
Sometimes is result almost same like (89.60941:85.10804), but i found few position which are totaly diferent like (0:80.23256)
It seems that Sampleheight is more acurate, but why?

terrainData.GetHeight expects an int x and y coordinate expressed relative to the size of the terrain. So, if your terrain is 2048x2048, valid x and y would range from 0-2048, and it returns the height of the terrain from the heightmap at that point.

terrain.SampleHeight expects a Vector3 position in worldspace, and returns the interpolated height of the terrain at that point.

So they measure totally different things - if you were getting similar results from a given input that’s coincidence.