我在变量中有一个值,比如dim a as integer = 145.98
我试着拿Left(a,2)
但它返回错误而不是返回14
我也试过left(a.Tostring,2)
但错误是一样的。
请帮我解决一下。
由于 Furqan
答案 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将尝试为您执行许多转换,但这样做会冒着意外结果的风险。