If we're talking about browser support, there's no such thing as a year "2022.5", but that's a valid input when using Chrome because type=number is floating point. It's a valid input, but still remains invalid in terms of what the site wants.
Yes, the theoretical odds of someone typing in a decimal for a year is astronomically low, but it's allowed even when it shouldn't be.
Although Google Chrome disallows letters from being entered into an input field of type number you can still type the letter "e", because "1.3e7" is a valid number. It would likely be simpler to use a pattern attribute to restrict the input field.
That solution would still accept "2e3" as a valid number. This is really a job for JavaScript, but the following would at least prevent you from submitting letters.