NSDecimalNumber(string: ".") Возвращает 0 (ноль). Зачем?
1 ответ
Решение
0
является допустимым входом.
0.
является действительным вводом`.
.0
является допустимым входом.
Не удивительно, что .
также допустимый вход. Странно, но не удивительно, и ценность четко определена.
Обратите внимание, что это допустимо, только если символ соответствует текущей локали, например, .
будет работать с английским языком, но не с немецким языком и наоборот:
Decimal(string: ".", locale: Locale(identifier: "de")) // NaN
Decimal(string: ",", locale: Locale(identifier: "de")) // Optional(0)
Короче говоря, как начальные, так и конечные нули могут быть опущены.
Если вы хотите обработать это значение, я рекомендую использовать регулярные выражения. Решите, какие форматы являются допустимыми, напишите регулярное выражение для этих форматов и проверьте строку с этим регулярным выражением.