Как десятичный формат может быть более строгим? - PullRequest
0 голосов
/ 28 февраля 2020

Есть несколько связанных вопросов по SO, но я думаю, что этот вопрос действительно уникален. Я работаю над системой, в которой мы ожидаем получить десятичный ввод от пользователей в их собственном регионе.

У нас есть пользователь в Канаде, который привык вводить числа во французском стиле (например, 12,5 - это число между 12 и 13), и когда они вводят этот номер в нашу систему, находясь во «французском» языке, он анализируется как число между 12 и 13. При переключении на Engli sh и вводе «12,5», число обрабатывается как 125, что в десять раз больше ожидаемого.

Проблема в том, что набор используемых символов числового формата отличается и влияет на то, как выполняется синтаксический анализ. Во французском языке символ , заставляет парсер переключаться с анализа целой части на анализ десятичной части. В Engli sh , является игнорируемым «разделителем группировки».

Я хотел бы выдать ошибку, когда пользователь Engli sh вводит «12,5», потому что мы ожидаем только запятые происходить, когда после него 3 цифры без каких-либо других маркеров, конец ввода и т. д. c.

Я хочу быть очень строгим, потому что я хочу убрать неоднозначность из числа как "12,5" на английском языке sh. Был ли это толстый палец, и это должно было быть "12,5", или это было на французском языке, думая, что они вводят число между 12 и 13. Я хотел бы выдать ошибку и убедиться, что пользователь вводит именно тот тип ввода, который программное обеспечение ожидает проанализировать.

Есть ли способ заставить DecimalFormat сделать это для меня, или мне нужно выполнить мою собственную дополнительную проверку?

...