为什么 Swift 十进制从包含字母的字符串返回数字?
Why is Swift Decimal Returning Number from String Containing Letters?
我正在使用 Swift 的 Decimal
类型,试图确保用户输入的 String
是有效的 Decimal
.
我的 Playground 文件中有两个 String
值,每个值都包含一个字母。其中一个值的开头包含一个字母,而另一个值的结尾包含一个字母。我使用每个值初始化一个 Decimal
,只有一个 Decimal
初始化失败; Decimal
初始化为包含开头字母的值。
为什么 Decimal
初始化为一个包含末尾字母的值 return 是有效的 Decimal
?我希望 nil
被 return 编辑。
附件是我的 Playground 文件的屏幕截图。
之所以如此,是因为 Decimal
接受字母前的任何数字值。这些字母充当其后任何数字的终止符。所以在你的例子中:
12a = 12 ( a is the terminator in position 3 )
a12 = nil ( a is the terminator in position 1 )
如果希望在字符串包含字母时两者都无效,那么您可以改用 Float
。
我正在使用 Swift 的 Decimal
类型,试图确保用户输入的 String
是有效的 Decimal
.
我的 Playground 文件中有两个 String
值,每个值都包含一个字母。其中一个值的开头包含一个字母,而另一个值的结尾包含一个字母。我使用每个值初始化一个 Decimal
,只有一个 Decimal
初始化失败; Decimal
初始化为包含开头字母的值。
为什么 Decimal
初始化为一个包含末尾字母的值 return 是有效的 Decimal
?我希望 nil
被 return 编辑。
附件是我的 Playground 文件的屏幕截图。
之所以如此,是因为 Decimal
接受字母前的任何数字值。这些字母充当其后任何数字的终止符。所以在你的例子中:
12a = 12 ( a is the terminator in position 3 )
a12 = nil ( a is the terminator in position 1 )
如果希望在字符串包含字母时两者都无效,那么您可以改用 Float
。