专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VB Dotnet

好久没写代码了,写个复数种试试看

发布时间:2011-06-23 16:01:11 文章来源:www.iduyao.cn 采编人员:星星草
好久没写代码了,写个复数类试试看
复数常用的形式有两种,一是定义式,即z=a+bi,其中a为实部b为虚部,二是指数式,即z=rExp(Qi),其中r为模Q为辐角,两者通过z=a+bi=r(cosQ+isinQ)来转换.
在复数间运算中,加减用定义式方便,乘除用指数式快捷,在开n次方求n次幂时,更是需要指数式.
下面给出代码,幂方运算还没验证,可能有错,因为那些数学我也丢得差不多了.

欢迎指正.也只是练习.

Complex.ComplexBase.vb

VB.NET code

Partial Class Complex
    Private MustInherit Class ComplexBase
        Protected gMaster As Double '实部或模
        Protected gSecondary As Double '虚部或辐角

        Private gIsNAN As Boolean = False '数据无效标志
        Private gRoundDigits As Integer = -1 '输出小数有效位。在0至15之间。如是负数,则不取舍

        Sub New()
            Me.Load(0, 0)
        End Sub

        Sub New(ByVal master As Double, ByVal secondary As Double)
            Me.DoBeforeLoad(master, secondary) '使用(模,辐角)表示时,模不能为负值

            Me.Load(master, secondary)
        End Sub

        Protected Sub Load(ByVal master As Double, ByVal secondary As Double)
            Me.gMaster = master
            Me.gSecondary = secondary

            DoAfterLoad() '使用(模,辐角)表示时,在此处理辐角主值
            Me.CheckNAN() '测试数据是否无效
        End Sub

        Protected Overridable Sub DoBeforeLoad(ByVal master As Double, ByVal secondary As Double)
        End Sub

        Protected Overridable Sub DoAfterLoad()
        End Sub

        Public ReadOnly Property IsNAN() As Boolean
            Get
                Return gIsNAN
            End Get
        End Property

        Protected MustOverride Function InternalCheckNAN() As Boolean '实现数据无效判定

        Public Sub CheckNAN()
            gIsNAN = InternalCheckNAN()
        End Sub

        Public Property RoundDigits() As Integer
            Get
                Return gRoundDigits
            End Get
            Set(ByVal value As Integer)
                If value > 15 Then
                    gRoundDigits = 15
                Else
                    gRoundDigits = value
                End If
            End Set
        End Property

        '小数位取舍
        Protected Function Round(ByVal value As Double) As Double
            If Me.RoundDigits < 0 Then Return value

            Return Math.Round(value, Me.RoundDigits)
        End Function

        '小数位取舍后输出为字串
        Protected Function RoundString(ByVal value As Double, Optional ByVal NotSign As Boolean = True) As String
            Dim tmp As Double = value

            If NotSign Then '忽略正负号
                If tmp < 0 Then
                    tmp = -tmp
                End If
            End If

            Return Round(tmp).ToString
        End Function

        MustOverride Sub Add(ByVal value As Object)

        MustOverride Sub Subtract(ByVal value As Object)

        MustOverride Sub Multy(ByVal value As Object)

        MustOverride Sub Divide(ByVal value As Object)

        MustOverride Overloads Function ToString(ByVal format As String) As String

    End Class

End Class




------解决方案--------------------
复数计算差不多都还给老师了,看到这个帖子,趁机捡点回来
------解决方案--------------------
要是c#的就更好了 呵呵
------解决方案--------------------
收集~~
------解决方案--------------------
多谢楼主分享~
------解决方案--------------------
我差点忘了还有复数这个东西。高中学的,好像。
------解决方案--------------------
呵呵。structer ,operater override .....
------解决方案--------------------
小妹也来学习了 

http://hi.baidu.com/hhh3h
这么难给是有病
------解决方案--------------------
学习


------解决方案--------------------
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: