除以2个双打结果总是以1 vb为单位

时间:2015-09-17 06:24:04

标签: vb.net double type-conversion tryparse

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结尾

我似乎忽视了一些必不可少的东西,但对于我的生活 - 我看不出它可能是什么......

任何帮助都会非常感激!

2 个答案:

答案 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失败。因此,如果您对布尔值应用除法,则会将结果显示为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()将返回0,以防无法转换输入字符串/ null