For example, if someone puts the year as "2020.0", the error message you get will be something like
CSV deserialize error: record 1 (line: 1, byte: 35): field 2: invalid digit found in string
which doesn't tell you at all what the problem is.
I guess nobody is going to intentionally put "2020.0" as the year, but this is easily done if you're building files with a script
I'd say we should probably allow .0 floats and convert to integer internally, but any other floats should raise an error that clearly states the problem