Wie zu Runden auf eine bestimmte Anzahl von signifikanten zahlen mit Excel VBA?

Edit: Dieser Teil ist gelöst!

So, ich habe ein paar Berechnungen in einem Programm, das ich mache, und die zahlen werden immer so lang, dass ich bin immer overflow-Fehler. Es ist aufgrund von Dingen wie dem teilen einer 50-stelligen Zahl durch eine weitere 50-stellige Zahl. Ich brauche einen Weg, um Runde spezifischen zahlen auf eine bestimmte Anzahl von signifikanten stellen.

Hier einige weitere Informationen. Zunächst alle, alle die zahlen, die ich wird die Rundung immer kleiner als 1. Die zahlen erhalten kann, so klein wie der 1E-50. Ich kümmert sich nur um die ersten 10 oder so signifikante Ziffern. Ich brauche nur einen Weg, um es Runden auf rund zehn sig Feigen, bevor er auf die nächste Berechnung, um zu verhindern, dass overflow-Fehler. Das, und eine Anzahl gehen zu 50 Figuren ist sehr sinnlos.

Ich dachte vielleicht Durchlaufen der Nummer, Ziffer für Ziffer? Das Programm könnte hinzufügen 1 zu einem Zähler, wenn die Anzahl gleich null ist, und dann brechen aus der Schleife, sobald es trifft alles andere als null. Dann ist der nächste Schritt könnte das abschneiden der Zahl, die Zähler plus jedoch viele signifikante Ziffern, die ich möchte.

Also für .000001234567812345678 zum Beispiel. Würde es wieder 5 Nullen. Wenn ich wollte, zehn wichtige Fakten, die ich tun würde, fünf + zehn = 15. Das Programm würde dann nur die ersten 15 Ziffern nach dem Dezimalkomma, so würde die Zahl abgeschnitten werden .000001234567812.

Andere Idee könnte sein, mit Hilfe des log. Dann wird die Kraft die neue Nummer ausgelöst werden würde, wäre die Anzahl der Nullen vor den signifikanten stellen.

Was ich nicht weiß ist, zunächst, wie man durch eine Zahl Ziffer für Ziffer, und überprüfen, ob jede Zahl ist eine null. Ich weiß auch nicht, wie Sie abschneiden einer Zahl zu einer bestimmten Menge von stellen.

Jede Hilfe wäre sehr geschätzt werden!

Edit: Das Teil ist nicht gelöst.

Ich würde mich schlecht fühlen, dass ein weiterer post so bald, also werde ich die Frage hier. Wenn es nicht beantwortet in 20 Minuten oder so, vielleicht mache ich einem anderen Beitrag. Warum das nicht funktioniert?

Sub Rounding()
    Tracker = 0
    For i = 1 To 10
        Tracker = Tracker + 1
        Cells(1, Tracker) = Rnd
        Cells(1, Tracker) = Application.Evaluate("=Round(Cells(1, Tracker), 4 - (Int(Log(Cells(1,Tracker))) + 1))")
    Next
    Columns("A:J").EntireColumn.AutoFit
End Sub

Bekomme ich immer einen Fehler #NAME?, in jeder einzelnen Zelle. Dies sollte Runde jede Zahl auf vier signifikante stellen.

  • Darauf hinzuweisen, dass Excel nur mit 15 stellen Genauigkeit: 50-stellige zahlen dargestellt werden können "richtig". Siehe Jerry ' s die Antwort hier: excelforum.com/excel-general/...
InformationsquelleAutor TheTreeMan | 2012-07-31
Schreibe einen Kommentar