除以 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
表示转换失败从字符串到双。因此,如果您对布尔值应用除法,它会给您结果 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()
将 return 0
以防无法转换输入 string/null
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
表示转换失败从字符串到双。因此,如果您对布尔值应用除法,它会给您结果 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()
将 return 0
以防无法转换输入 string/null