I'm trying to create a system where numbers like 1,000 get converted over to 1k, 1,000,000 to 1m, etc. The code works great up until I input a number like 8,850,000. Instead of spitting out 8.85B, it spits out 8.849999B. Is this a quirk with Unity and or C#, or did I do something wrong in the code?
Edit: It wasn't the Mathf.Round function, it was the limitations of the float data type. I managed to fix the problem by using the decimal data type instead.
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI; 
using UnityEngine;
public class MoneyManager : MonoBehaviour
{
    public Text txt;
    private static float totalMoney;
    public float perClick;
    private float decimalMoney;
    private float roundedMoney;
    private string[] numberletter = new string[] { "K", "B", "T" };
    private string correctletter; 
    void Start()
    {
        CookieClick.clickAmount = perClick;
    }
    void Update()
    {
        totalMoney = CookieClick.money;
        roundedMoney = Mathf.Floor(Mathf.Log10(totalMoney));
        if(roundedMoney >= 3 && roundedMoney < 6)
        {
            correctletter = numberletter[0];
            decimalMoney = Mathf.Round(totalMoney/1000f * 100.0f) * 0.01f;
            Debug.Log(decimalMoney);
            txt.text = decimalMoney.ToString() + correctletter; 
        }
        else if(roundedMoney >= 6 && roundedMoney < 9)
        {
            correctletter = numberletter[1];
            Debug.Log(totalMoney);
            decimalMoney = Mathf.Round(totalMoney/1000000f * 100.0f) * 0.01f;
            Debug.Log(decimalMoney);
            txt.text = decimalMoney.ToString() + correctletter;
        }
        else
        {
            txt.text = totalMoney.ToString(); 
        }
    }
}
 
     
    