txtfield1和txtMCLCCurrToEUR都是双打
(最初字符串转换为double,两者都是外部值,小数点后5位数)
Dim f1 As Double
txtField2.Text = (Double.TryParse(txtMCLCurrToEUR.Text, f1) / Double.TryParse(txtField1.Text, f1)).ToString("N5")
无论它们的值如何,我总是在txtField2.text
中以1结尾我似乎忽视了一些必不可少的东西,但对于我的生活 - 我看不出它可能是什么......
任何帮助都会非常感激!
答案 0 :(得分:1)
你不应该对两个转换都使用f1,第二个会覆盖第一个,结果总是一个。 Tryparse没有返回值,只有一个flac vor成功与否。
Dim f1 As Double
Double.TryParse(txtMCLCurrToEUR.Text, f1)
Dim f2 As Double
Double.TryParse(txtField1.Text, f2)
txtField2.Text = (f1/f2 ).ToString("N5")
答案 1 :(得分:1)
Double.TryParse()
将返回Boolean
值(true / false),true
表示成功,false
表示如果从字符串转换为double失败。因此,如果您对布尔值应用除法,则会将结果显示为1
或0
。
您可以通过启用Option Strict On
考虑一个例子:
Dim a = True
Dim b = True
Dim c = CDbl(a) / CDbl(b) ' will gives you output as 1
在哪里
Dim a = True
Dim b = False
Dim c = CDbl(a) / CDbl(b) ' will gives you output as -1.#INF
您可以在不使用任何第三个变量的情况下执行此操作,如下所示。
txtField2.Text = (Val(txtMCLCurrToEUR.Text) / Val(txtField1.Text)).ToString("N5")
Val()
将返回0
,以防无法转换输入字符串/ null