Highest score not in mintues and seconds

When my game starts the timer works perfectly good but when I finish the level and go back to that scene the highscore is shown as 73:30303 instead of 1:22:171 how can this be done, (Guessing the Player Pref in the start function is the wrong part) because instantly the time is correct but when the scene is changed it goes to 73:30303
Heres the code:

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 
using UnityEngine.Internal;

public class TImer : MonoBehaviour
{

    public Text timerText;
    public Text highscore;
    private float startTime;
    bool starting = false;

    public void GameFinished()
    {
        float t = Time.time - startTime;
        if (t < PlayerPrefs.GetFloat("HighScore", float.MaxValue))
        {
            PlayerPrefs.SetFloat("HighScore", t);
            highscore.text = $"{(int)t / 60}:{(t) % 60:00.000}";
            PlayerPrefs.Save();
        }
    }

    public void Start()
    {
        
        highscore.text = PlayerPrefs.GetFloat("HighScore").ToString();

    }

    public void GameStart()
    {
        starting = true;
        startTime = Time.time;
    }

    public void Update()
    {
        if (starting == true)
        {
            
            float t = Time.time - startTime;
            string minutes = $"{(int)t / 60}:{(t) % 60:00.000}";
            timerText.text = minutes;
        }

    }
}

found the answer:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;


public class TImer : MonoBehaviour
{

    public Text timerText;
    public Text highscore;
    private float startTime;
    bool starting = false;
    private float highestscore;

    public void GameFinished()
    {
        float t = Time.time - startTime;
        if (t < PlayerPrefs.GetFloat("HighScore", float.MaxValue))
        {
            PlayerPrefs.SetFloat("HighScore", t);
            highscore.text = FormatTime(t);
            PlayerPrefs.Save();
        }
    }

    public void Start()
    {

        startTime = PlayerPrefs.GetFloat("HighScore", 0);
        highscore.text = FormatTime(startTime);

    }

    public void GameStart()
    {
        starting = true;
        startTime = Time.time;
    }

    public void Update()
    {
        if (starting == true)
        {

            float t = Time.time - startTime;
            timerText.text = FormatTime(t);
        }

    }

    private string FormatTime(float time)
    {
        int minutes = Mathf.FloorToInt(time / 60f);
        int seconds = Mathf.FloorToInt(time % 60f);
        int milliseconds = Mathf.FloorToInt((time - Mathf.Floor(time)) * 1000f);

        return string.Format("{0:00}:{1:00}.{2:000}", minutes, seconds, milliseconds);
    }
}