割と時間かかったので載せます。何かの参考になれば幸いです。
少数以外で最初入った"0"も消せます。
コード
以下のメソッドで変換した値を、お好みの方法でinputのvalueにセットしてください。
const validateInputFloat = (value: string): string => {
const float = value.replace(/^0+(?=\d)/, "");
if (!/^[0-9.]+$/.test(float)) {
return "0";
}
if (/\.$/.test(float)) {
return `${float}0`;
}
return float;
};

Comments
.1 → 0.1 にならない
0.0000 → 0 にならない
8.90 → 8.9 にならない
12.34.56 → 0 にならない
.... → ....0 になる
この辺は仕様でしょうか?
Let's comment your feelings that are more than good