整数的左值

时间:2010-10-18 19:45:46

标签: vb.net

我在变量中有一个值,比如dim a as integer = 145.98 我试着拿Left(a,2) 但它返回错误而不是返回14 我也试过left(a.Tostring,2) 但错误是一样的。 请帮我解决一下。

由于 Furqan

5 个答案:

答案 0 :(得分:7)

首先,你说你正在使用一个整数,但这个数字实际上是一个浮点数,不是一个整数。

其次,“采取数字左边”的动作不是一个有意义的操作。 Left是一个 substring 操作,它只在字符串上定义。

可以将数字转换为字符串,然后提取十进制表示的子字符串。这应该工作。什么是错误?

最后,一些一般建议:

Option Strict On放在vb文件的最顶层,或者更好的是,将此选项设置为您设置中的默认选项。否则,你有一个名副其实的hullaballoo等待发生,因为当涉及到可疑或彻头彻尾的错误代码时,VB非常......“宽大”。此选项修复此问题并将标记更多错误。例如,编译器(正当地)抱怨你的任务,

Dim a As Integer = 145.98

因为正如我所说,你试图将一个浮点数分配给一个整数。

答案 1 :(得分:1)

首先,145.98不是整数。 145是整数。您可能想尝试Double。其次,您只能获取字符串的left。当你添加ToString时,你在正确的轨道上,但你忘记了最后的()了。

Dim a as Integer = 145
Dim b as Double = 145.98

然后你可以这样做:

Left(a.ToString(), 2)
Left(b.ToString(), 2)

答案 2 :(得分:0)

请尝试Left(a.ToString(), 2)

答案 3 :(得分:0)

如果你的“整数”是一个字符串,试试这个:

 Dim a As String = "145.98"
 Dim b As Int32 = 0
 Int32.TryParse(a.Substring(0, 2), b)

答案 4 :(得分:0)

正如康拉德所说的选项严格,这不会编译。如果您没有它将执行转换并仅存储整数部分。此时,您可以调用tostring,然后在其上执行任何操作,作为您想要的字符串。

选项严格

Option Strict On

Module Module1

    Sub Main()
        Dim I As Integer = CType(142.3, Integer)
        Dim s As String = I.ToString
        Console.WriteLine(Left(s, 2))
    End Sub

End Module

没有optiion严格

Module Module1

    Sub Main()
        Dim I As Integer = 142.3
        Dim s As String = I
        Console.WriteLine(Left(s, 2))
    End Sub

End Module

正如您从两个示例中看到的那样,strict将尝试为您执行许多转换,但这样做会冒着意外结果的风险。