0
является допустимым входом.
0.
действительный ввод`.
.0
действительный ввод.
Не удивительно, что .
также является допустимым вводом. Странно, но не удивительно, и ценность четко определена.
Примечание. Это действительный только в том случае, если символ соответствует текущему языку, например. .
будет работать с английской локали, но не с немецкой локали и наоборот:
Decimal(string: ".", locale: Locale(identifier: "de")) // NaN
Decimal(string: ",", locale: Locale(identifier: "de")) // Optional(0)
Короче говоря, как начальные и конечные нули могут быть опущены.
Если вы хотите обработать это значение, я рекомендую использовать регулярные выражения. Определите, какие форматы действительны, напишите регулярное выражение для этих форматов и проверьте строку с этим регулярным выражением.
Это скорее функция, чем ошибка. (почему) вы хотите явно исключить «.». как действительный вход? – luk2302
Любопытно - что происходит с 'NSDecimalNumber (строка:", ")' (с использованием запятой), если локали этого устройства установлены в локаль, которая использует запятую в качестве десятичного разделителя. – rmaddy
@rmaddy Этот символ должен соответствовать десятичному разделителю locale 'Decimal (строка:". ", Locale: Locale (идентификатор:" de "))' будет возвращать 'NaN'. – Sulthan