除以 2 双精度结果总是 1 vb

dividing 2 doubles results always in 1 vb

txtfield1 和 txtMCLCCurrToEUR 都是双精度的

(原来是strings转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 没有 return 值,只有成功与否的标志。

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() 将 return 一个 Boolean 值(true/false),true 表示成功,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() 将 return 0 以防无法转换输入 string/null