gpt4 book ai didi

vb.net - IsNumeric() 允许在最后一个值中减去

转载 作者:行者123 更新时间:2023-12-05 08:22:29 24 4
gpt4 key购买 nike

我在我的代码中使用 IsNumeric() 函数来验证数字。

IsNumeric(100) - 正确,IsNumeric(-100) - 正确,IsNumeric(+100) - 真,

IsNumeric(100-) - true - 我对此有疑问。 (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

latitude 转换为 double 时出错

Input string was not in a correct format.

最佳答案

IsNumeric 来自 Microsoft.VisualBasic namespace/dll,一堆帮助程序,旨在帮助 VB6 程序员获得他们神秘的 VB6 代码/知识,在 VB.NET 上工作

如果您使用同一 dll 中的其他函数,例如 Microsoft.VisualBasic.Conversion.Int(),或者您使用专用的 VB.NET 转换器,例如 CIntCDbl 这些也将处理尾随减号并返回负值

如果您想放弃 VB6 的旧方法,请使用数字类型的 TryParse.. 但总的来说,要保持一致/如果您使用 Microsoft.VisualBasic 中的函数来确定是否可以进行转换,请使用 vb转换,因为包本身是一致的,但在 Microsoft.VB 和普通 .net 系统之间存在一些行为差异


编辑:

一些人一直想知道源代码以及它如何使用 TryParse,那么为什么它不像直接使用 TryParse 那样工作呢?

Microsoft.VisualBasic.Information.IsNumeric() 使用 Microsoft.VisualBasic.CompilerServices.DoubleType.TryParse() 来确定表达式是否为数字。此 DoubleType.TryParseDouble.TryParse 不同 - 它是 VB 命名空间中的辅助方法,专门设置 NumberStyles.AllowTrailingSign 许多其他标志中的标志。解析数字时(首先作为非货币相关,使用 Double.Parse,然后如果失败,则使用货币相关测试的调整值进行第二次尝试)此 AllowTrailingSign 标志将与其他区域数字格式规则一起考虑,以确定是否传入的值是数字

您会注意到,在遵循美国数字格式文化的机器上,字符串“(100$)”也被声明为数字,但调用 Double.TryParse("(100$)", x ) 也将返回 false。这里的 VB 辅助方法在接受什么方面比系统方法要自由得多,因为它们告诉系统方法比默认情况下更自由

如前所述,我一直将 Microsoft.VisualBasic 命名空间视为一组辅助方法,旨在允许将糟糕的旧 VB6 代码粘贴到 VB.NET 中,并以最少的改动工作。我不提倡在新项目中使用它,并且当我在 VB.NET 上工作时我删除了引用——使用它来支持 VB6 的概念,即“只需将任何东西放入任何类型,它可能会弄清楚并工作.. 如果不成功,我们总是可以在出错时继续下一个“应该被丢弃,以支持对执行的操作及其意图的精确和准确

关于vb.net - IsNumeric() 允许在最后一个值中减去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62079355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com