ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 24.02.2003

Diese Seite wurde zuletzt aktualisiert am 24.02.2003
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Wurzeln ohne Übel

Zurück...


Anzeige

(-hg) mailto:hg_anyroot@aboutvb.de

Zur Umkehrung einer Potenzrechnung braucht es in Visual Basic eigentlich keine spezielle Funktion. Sie können die n-te Wurzel aus einer gegebenen Zahl im Prinzip mit dem Potenz-Operator "^" berechnen, indem Sie als Exponenten den Kehrwert der Wurzel setzen:

Basis = Zahl ^ (1 / Wurzel)

Allerdings sind ein paar Besonderheiten und Ausnahmefälle zu berücksichtigen. Etwa wenn die gegebene Zahl negativ ist, kann sie nur zustande gekommen sein, wenn die Basis negativ und der Exponent eine positive ungerade Zahl waren (auf Ausflüge in die Welt der komplexen Zahlen verzichten wir hier für den Alltagsgebrauch). Weiterhin kann die "nullte" Wurzel nur ermittelt werden, wenn die gegebene Zahl gleich 1 ist - denn der Exponent 0 ergibt zu jeder Basis 1. Bei einer Basis gleich 0 ist der Exponent fast egal: Das Ergebnis ist immer 0 - jedoch kann Visual Basic über die oben stehende Formel keine negative Wurzel aus 0 ziehen.

Die folgende Funktion AnyRoot berücksichtigt diese Ausnahmebedingungen und löst gegebenenfalls einen Laufzeitfehler aus:

Public Enum AnyRootErrorConstants
  ErrRootZero = 10001
  ErrNumberZeroNegativeRoot = 10002
  ErrNegativeNumberEvenRoot = 10003
End Enum

Public Function AnyRoot(ByVal Number As Double, _
 ByVal Root As Double) As Double

  If Root = 0 Then
    Err.Raise ErrRootZero
  Else
    Select Case Sgn(Number)
      Case 0
        Select Case Sgn(Root)
          Case -1
            Err.Raise ErrNumberZeroNegativeRoot
          Case 1
            AnyRoot = 0
        End Select
      Case 1
        AnyRoot = Abs(Number) ^ (1 / Root)
      Case -1
        If Root > 0 Then
          Select Case (Abs(Root) And 1)
            Case 0
              Err.Raise ErrNegativeNumberEvenRoot
            Case 1
              AnyRoot = -(Abs(Number) ^ (1 / Root))
          End Select
        Else
          AnyRoot = -(Abs(Number) ^ (1 / Root))
        End If
    End Select
  End If
End Function

Modul modAnyRoot (anyroot.zip - ca. 0,7 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer