分数。

时间:2014-07-18 11:49:07

标签: vb.net vb.net-2010

如何修复此错误。 。当用户输入整数并乘以它时,我的代码的这一部分没有问题

但是当用户输入分数(负数或正数)时,如" 1/2,-2 / 3 ETC"有错误

错误指向:new1 = CDbl(txta1.Text)* CDbl(txtb2.Text)* CDbl(txtc3.Text)

错误消息:从字符串" 1/2"转换输入' Double'无效。

查看plaincopy到clipboardprint? 昏暗的new1,new2,new3,new4,new5,new6,add1,add2,minus1 As Double

    new1 = CDbl(txta1.Text) * CDbl(txtb2.Text) * CDbl(txtc3.Text)  
    new2 = CDbl(txta2.Text) * CDbl(txtb3.Text) * CDbl(txtc1.Text)  
    new3 = CDbl(txta3.Text) * CDbl(txtb1.Text) * CDbl(txtc2.Text)  

    new4 = CDbl(txtc1.Text) * CDbl(txtb2.Text) * CDbl(txta3.Text)  
    new5 = CDbl(txtc2.Text) * CDbl(txtb3.Text) * CDbl(txta1.Text)  
    new6 = CDbl(txtc3.Text) * CDbl(txtb1.Text) * CDbl(txta2.Text)  

2 个答案:

答案 0 :(得分:5)

请激活Option strict ON,这将帮助您防止新手错误,例如尝试使用像txta1.text这样的文本字段作为数字: http://support.microsoft.com/kb/311329 您必须尝试将值从文本解析为如此数字:

Dim number1 As Double

If Double.TryParse(txta1.Text, number1) Then
 // do something
Else
   Console.WriteLine("{0} is outside the range of a Double.", _
                   value)
// report error
End If

否则调试代码非常困难。 对于分数:我很难用手可靠地解析分数。我会想到预建,就像数学表达式库一样。看看:https://ncalc.codeplex.com/

答案 1 :(得分:2)

" 1 /"是一个字符串,必须通过代码解析并转换为数字。

这是一个例子。 用于简单分数(如示例所示),小数和负数。

注意:您应该添加错误检查。为简洁起见,我没有包含任何错误检查。

    Dim strInput As String = "-1/2"
    Dim dblValue As Double = Nothing

    If strInput.Contains("/") Then ' A fraction
        Dim strArray() As String = strInput.Split(CChar("/"))
        dblValue = CDbl(strArray(0)) / CDbl(strArray(1))
    Else
        dblValue = CDbl(strInput)
    End If
    Console.WriteLine(dblValue)