How remove this floating point issue? (if possible without rounding)

Hello guys. I’m making my own plugin like terrain editor. But with some improvements. Now I stuck with cylinder manual plane. Sometimes it placed a bit higher or lower than plane:

local MouseDirection = Mouse.UnitRay.Direction --hypotenuse direction
--PlaneManualParams[1] = position, [2] = orientation
local ManualCFrame = CFrame.new(PlaneManualParams[1]) * CFrame.Angles(math.rad(PlaneManualParams[2].X), math.rad(PlaneManualParams[2].Y), math.rad(PlaneManualParams[2].Z))
local PlaneDirection = (ManualCFrame * CFrame.Angles(math.pi / 2, 0, 0)).LookVector
local PlaneCameraRelative = ManualCFrame:Inverse() * workspace.CurrentCamera.CFrame
local PlaneCameraLenght = -PlaneCameraRelative.Position.Y
local MouseOnPlaneDirection = CFrame.fromOrientation(ManualCFrame:ToOrientation()):Inverse() * CFrame.new(MouseDirection.X, MouseDirection.Y, MouseDirection.Z)

local MouseHypothenuseLenght = PlaneCameraLenght / MouseOnPlaneDirection.Position.Y
												
if not BrushPart:IsA("WedgePart") and BrushPart.Shape == Enum.PartType.Ball then
	BrushPart.CFrame = CFrame.new((workspace.CurrentCamera.CFrame.Position + (MouseDirection * MouseHypothenuseLenght)).X, (workspace.CurrentCamera.CFrame.Position + (MouseDirection * MouseHypothenuseLenght)).Y, (workspace.CurrentCamera.CFrame.Position + (MouseDirection * MouseHypothenuseLenght)).Z) * CFrame.fromOrientation(math.rad(DefaultBrushRotation.X), math.rad(DefaultBrushRotation.Y), math.rad(DefaultBrushRotation.Z)) * CFrame.new(0, ToolSettings[Tool]["Brush"]["Size"][2].Y * (ToolSettings[Tool]["Brush"]["Pivot"][2] - 50) / 100, 0)
else
	if ToolSettings[Tool]["Brush"]["CameraLook"][2] == false then
		--problem here (possibly).
		BrushPart.CFrame = CFrame.new((workspace.CurrentCamera.CFrame.Position + (MouseDirection * MouseHypothenuseLenght)).X, (workspace.CurrentCamera.CFrame.Position + (MouseDirection * MouseHypothenuseLenght)).Y, (workspace.CurrentCamera.CFrame.Position + (MouseDirection * MouseHypothenuseLenght)).Z) * CFrame.new(0, ToolSettings[Tool]["Brush"]["Size"][2].Y * (ToolSettings[Tool]["Brush"]["Pivot"][2] - 50) / 100, 0) * CFrame.fromOrientation(math.rad(DefaultBrushRotation.X), math.rad(DefaultBrushRotation.Y), math.rad(DefaultBrushRotation.Z + if ToolSettings[Tool]["Brush"]["Shape"][2] == "Cylinder" then 90 else 0))
	else
		--lookAt2 is better CFrame.lookAt() on high angles
		BrushPart.CFrame = lookAt2(CFrame.new((workspace.CurrentCamera.CFrame.Position + (MouseDirection * MouseHypothenuseLenght)).X, (workspace.CurrentCamera.CFrame.Position + (MouseDirection * MouseHypothenuseLenght)).Y, (workspace.CurrentCamera.CFrame.Position + (MouseDirection * MouseHypothenuseLenght)).Z).Position, workspace.CurrentCamera.CFrame.Position) * CFrame.fromOrientation(math.rad(DefaultBrushRotation.X), math.rad(DefaultBrushRotation.Y), math.rad(DefaultBrushRotation.Z + if ToolSettings[Tool]["Brush"]["Shape"][2] == "Cylinder" then 90 else 0)) * CFrame.new(0, ToolSettings[Tool]["Brush"]["Size"][2].Y * (ToolSettings[Tool]["Brush"]["Pivot"][2] - 50) / 100, 0)
	end
end
PlaneObject.CFrame = CFrame.fromOrientation(ManualCFrame:ToOrientation()) + (workspace.CurrentCamera.CFrame.Position + MouseDirection * MouseHypothenuseLenght)
if BrushActive == true then
	if (BrushPart.CFrame.Position.Y ~= 0) then
		--Zero altitude for testing purpoices.
		warn("NOT ZERO: " .. tostring(BrushPart.CFrame.Position.Y))
	end
end


You can see that there’s 0 Y altitude on my plugin’s section, but something that looks like floating point occurs here, and I receive 0.0000152587890625 issue, which creates weird hills on terrain.
Most strange that this bug occurs ONLY on cylinder, sphere, block and wedge works fine, and they haven’t any floating point issues.