Thank you for working on this. Your points are well taken. One tiny comment:
+ if (basic_numeric_field) + { + if (thousands_sep_ignored)
This might be better combined as "if (basic_numeric_field && thousands_sep_ignored)", so that it's more similar to the previous "if".