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)
简而言之,前导零和尾随零都可以省略。
如果要处理这个值,我推荐使用正则表达式。确定哪些格式有效,为该格式编写正则表达式并使用该正则表达式检查字符串。
这是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)
简而言之,前导零和尾随零都可以省略。
如果要处理这个值,我推荐使用正则表达式。确定哪些格式有效,为该格式编写正则表达式并使用该正则表达式检查字符串。