Hi Graham,
This issue is occurring as from 3.1 onwards in the field app we now honour and apply locale formatting correctly based on the system locale of the device or set in the survey, previously a bug was preventing this occurring properly, especially for those that use different locale formatting for numbers. So the use of comma thousand separators and decimal places or decimal comma are being applied after values are entered.
In the case of integer and decimal fields, a field length should never be set on these field types, this is actually a database limitation as it isn't applicable to integer/decimal fields, the field length setting should only be applied to string/text fields from a database perspective. Whilst in the past this may have worked in the field app, it will now cause the data to be truncated if more than 3 numbers which is the correct behaviour once the commas are added to the thousand separators.
The correct way to limit a integer or decimal field is to use an input mask, for example if you use 9999 the integer field will be limited to 4 numbers on input, and the locale formatting will be ignored and not applied when input mask is used.
Hope this helps,
Phil.