Why does camera distance always print a diff value in first person?

local function focusControl(actionName, inputState, inputObject)
if inputState == Enum.UserInputState.Begin then
local camDistance = (workspace.CurrentCamera.CFrame.p - player.Character.Head.Position).Magnitude
print(camDistance)
end
end)
ContextActionService:BindAction("FocusControl", focusControl, true, Enum.KeyCode.LeftControl)

Im trying to detect if the player is in first person and the issue is that when they are the distance from the player head to the cam keeps changing. Sometimes the value can even go higher than 1.
Output:
21:57:08.376 0.50876098871231 - Client - Main:68
21:57:08.957 0.50383162498474 - Client - Main:68
21:57:09.274 0.5131242275238 - Client - Main:68
21:57:09.640 0.52590411901474 - Client - Main:68
21:57:09.856 0.52670919895172 - Client - Main:68
21:57:10.040 0.52310848236084 - Client - Main:68
21:57:10.206 0.52149373292923 - Client - Main:68
21:57:10.423 0.52363610267639 - Client - Main:68
21:57:10.624 0.52765774726868 - Client - Main:68
21:57:10.840 0.53116470575333 - Client - Main:68
21:57:11.057 0.53188967704773 - Client - Main:68
21:57:11.307 0.52665615081787 - Client - Main:68
21:57:11.574 0.52010273933411 - Client - Main:68
21:57:11.857 0.51507329940796 - Client - Main:68
21:57:12.140 0.50966286659241 - Client - Main:68
21:57:13.024 0.51486557722092 - Client - Main:68
21:57:13.491 0.52652853727341 - Client - Main:68
21:57:13.740 0.52246832847595 - Client - Main:68
21:57:13.957 0.52098280191422 - Client - Main:68
21:57:14.308 0.52678400278091 - Client - Main:68
21:57:14.623 0.53142285346985 - Client - Main:68
21:57:15.056 0.52269196510315 - Client - Main:68