txtfield1和txtMCLCCurrToEUR都是double
(原字符串转换为双精度,都是forex的值,小数点后有5位数字)
Dim f1 As Double
txtField2.Text = (Double.TryParse(txtMCLCurrToEUR.Text, f1) / Double.TryParse(txtField1.Text, f1)).ToString("N5")
不管它们的值是什么,我总是在txtField2.text
中以1结束我似乎忽略了一些重要的东西,但对于我的生活——我不知道它可能是什么…
任何帮助都将非常感激!
不应该对两个转换都使用f1,第二个转换会覆盖第一个转换,结果总是一个。Tryparse没有返回值,只有一个flac语句成功与否。
Dim f1 As Double
Double.TryParse(txtMCLCurrToEUR.Text, f1)
Dim f2 As Double
Double.TryParse(txtField1.Text, f2)
txtField2.Text = (f1/f2 ).ToString("N5")
Double.TryParse()
将返回一个Boolean
值(true/false),如果成功则返回true
,如果从字符串转换为double失败则返回false
。因此,如果你对布尔值应用除法,它会给你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()
在转换输入字符串/null失败的情况下将返回0