我IsNumeric()在代码中使用函数来验证数字。
IsNumeric(100) - 真的,
IsNumeric(-100)- 真的,
IsNumeric(+100)- 真的,
IsNumeric(100-)-真的- 我对此有疑问。(100-) 这是一个有效的数字吗?IsNumeric() 这个值返回true。
Dim latitude As String = "12.56346-"
If IsNumeric(latitude) Then
If (Convert.ToDouble(latitude) >= -90 And Convert.ToDouble(latitude) <= 90) Then
isValidLatitude.Text = "true"
Else
isValidLatitude.Text = "false"
End If
Else
isValidLatitude.Text = "false"
End If
Run Code Online (Sandbox Code Playgroud)
转换latitude为双精度时出错
Input string was not in a correct format.
Run Code Online (Sandbox Code Playgroud)
IsNumeric来自Microsoft.VisualBasic命名空间/dll,一堆帮助程序的东西,旨在帮助 VB6 程序员获得他们在 VB.NET 上工作的神秘 VB6 代码/知识
您会注意到,如果您使用来自同一个 dll 的其他函数,例如Microsoft.VisualBasic.Conversion.Int(),或者您使用专用的 VB.NET 转换器,例如CInt或CDbl这些也将处理尾随减号并返回负值
如果您想放弃 VB6 的旧方法,请使用数字类型的 TryParse .. 但总而言之,要保持一致/如果您使用 Microsoft.VisualBasic 中的函数来确定是否可以进行转换,请使用 vb 转换,因为在包本身是一致的,但在 Microsoft.VB 和普通的 .net 系统之间存在一些行为差异
编辑:
一些人一直想知道源代码以及它如何使用 TryParse,那么为什么它不像直接使用 TryParse 那样工作呢?
Microsoft.VisualBasic.Information.IsNumeric()用于Microsoft.VisualBasic.CompilerServices.DoubleType.TryParse()确定表达式是否为数字。这DoubleType.TryParse与Double.TryParse- 它又是 VB 命名空间中的一个辅助方法,专门设置NumberStyles.AllowTrailingSign许多其他标志中的标志。在解析数字时(首先作为非货币相关,使用 Double.Parse,然后如果失败,则使用调整后的货币相关测试的值进行第二次尝试)此 AllowTrailingSign 标志将与其他区域数字格式规则一起考虑,以确定是否传入的值是数字
您会注意到,在遵循美国数字格式文化的机器上,“(100$)”字符串也被声明为数字,但调用Double.TryParse("(100$)", x)也会返回 false。这里的 VB 辅助方法在它们接受的内容方面比 System 方法更自由,因为它们告诉 System 方法比默认情况下更自由
如前所述,我一直将 Microsoft.VisualBasic 命名空间视为一堆辅助方法,旨在允许将糟糕的旧 VB6 代码粘贴到 VB.NET 中并以最少的改动工作。我不提倡在新项目中使用它,并且在我使用 VB.NET 时删除了引用 - 使用它来支持 VB6 的概念,即“只需将任何类型的任何东西都吊起来,它可能会弄清楚并且工作..如果没有,我们总是可以在错误恢复下”应该被丢弃,以支持对执行的操作及其意图的精确和准确
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |