Left analog stick input on gamepad is not analog in Unity

In my game, I’ve mapped horizontal and vertical movement to my PS5 controller’s X and Y axis (left analog stick) using the default settings in the Input Manager. Mouse X and Mouse Y are set up similarly, using the right stick (3rd and 4th axes) instead. I control the camera using Cinemachine, and the player using my own script. Here is the part of my script that reads the user input:

inputDirection = new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical")).normalized;

This is the part that interprets the input (character.Move is a function in a separate script, it isn’t relevant here):

if (Mathf.Abs(inputDirection.magnitude) > 0.001f)
    character.Move(inputDirection, cameraTransform);
    character.moving = false;

When I check the inputDirection variable in the inspector while moving the stick straight up, the value of inputDirection.z is always either 1 or 0, with no possible values in between. It doesn’t matter how far the stick is from the centre, it will always be either 1 or 0.