两个double的除法总是得到1vb



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。因此,如果你对布尔值应用除法,它会给你10的结果。

您可以通过启用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

最新更新