NSDecimalNumber(string: ".") returns 0(零)。为什么?

NSDecimalNumber(string: ".") returns 0 (zero). Why?

这是Swift3,Xcode8.1
我期待 nan

这会是一个错误吗?

举例说明:

关于如何处理“.”的任何想法?
我想避免这样的事情:

if string == "." { ... }

guard string =! "." { ... }

0 是有效输入。

0. 是一个有效的输入。

.0 是一个有效的输入。

. 也是一个有效的输入并不奇怪。奇怪,但并不奇怪,而且价值定义明确。

请注意,这仅在字符匹配当前语言环境时才有效,例如. 将适用于英语语言环境,但不适用于德语语言环境,反之亦然:

Decimal(string: ".", locale: Locale(identifier: "de")) // NaN
Decimal(string: ",", locale: Locale(identifier: "de")) // Optional(0)

简而言之,前导零和尾随零都可以省略。

如果要处理这个值,我推荐使用正则表达式。确定哪些格式有效,为该格式编写正则表达式并使用该正则表达式检查字符串。