计算器应用程序中的除法和对数

时间:2014-05-18 11:59:54

标签: vb.net calculator

我正在vb.net中创建一个计算器。我有两个问题 1)我这样处理除零。

Private Function calculate(ByVal num1 As Decimal, ByVal num2 As Decimal, ByVal inputOp As String) As Decimal
        Dim output As Decimal
        firstNum = num1
        secondNum = num2
        Select Case inputOp
            Case "+"
                output = num1 + num2
            Case "-"
                output = num1 - num2

            Case "/"
                Dim value As Decimal
                Try
                    isFirst()
                    value = (num1 / num2)
                Catch ex As DivideByZeroException
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK)
                End Try
                output = value
            Case "*"
                output = num1 * num2
            Case "Mod"
                output = (num1 Mod num2)
            Case "^"
                output = CDec(Math.Pow(num1, num2))


        End Select
        Return output

    End Function  

并且对数值< = 0如下:

 Private Sub btn_log_Click(sender As System.Object, e As System.EventArgs) Handles btn_log.Click

        isFirst()
        If firstNum <= 0 Then
            txtCalc.Text = "Can't calculate the logaritm of a negative number"
        Else
            txtCalc.Text = Math.Log10(CType(firstNum, Double)).ToString()
            isFirstExist = False


        End If


    End Sub  

我的问题是在日志中打印消息和在分案中抛出异常的区别是什么。
对于日志,我也必须有例外。如果有人也可以指出我是如何做到这一点的,因为我不认为对于负对数,DivideByZeroException有例外。

我的第二个问题是,当我取一个负值的对数时,它会打印出行"Can't calculate the logarithm of a negative number",但字体太大。我可以将这行打印的字体变小吗?

1 个答案:

答案 0 :(得分:1)

通常,如果正在运行的程序部分无法继续执行有意义或正确的结果,并且您希望强制程序的更高部分处理出错的情况,则应该抛出异常它可以合理地进行。

Math.Log10方法总是返回一个Double,它有点方便&#34;特殊&#34; NaN的返回值,表示不是数字。

http://msdn.microsoft.com/en-us/library/system.math.log10(v=vs.110).aspx

如果他们没有选择返回NaN,那么可行的.NET框架创建者可能会抛出某种异常。然而,这使得使用Log10的开发人员必须在每次调用Log10时检查NaN而不是能够使用try / catch块。

.NET中有几个专门的异常类。如果你希望在传入负数时从代码中抛出异常,那么在这种情况下选择一个好的可能就是ArgumentException。

If firstNum <= 0 Then
        Throw New ArgumentException("Can't calculate the logarithm of a negative number")

但是,在这种情况下,您的日志打印错误的解决方案可能更好,因为异常的全部内容是“强迫某些事情处理它”#34;。你的程序没有任何高于按钮点击处理程序的东西,所以抛出一个异常可能会导致它崩溃并出现&#34;未处理的异常&#34;。

关于字体问题,TextFox控件上有一个属性,可让您设置字体外观,大小和样式。在设计器中选择它,然后在属性窗口中挖掘它。如果您只希望您的错误很大而其他结果很小,则可能需要使用某种支持内联样式的富文本框。