Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Das liegt daran, dass der Wert 0,6 ist, so dass 0,5 nur durch Betrug erreicht werden kann.
Wird "v1" in eine beliebige Zahl eingefügt, so zeigt dies, dass sie korrekt auf "i = 2" gerundet wurde.
Wenn man 'v1' in eine beliebige Zahl einfügt, kann man sehen, dass bis 'i = 2' alles richtig gerundet wird.
Wenn nur eine Ziffer normalisiert wird, ist es einfach: 0, 1, 2, 3, 4 -> 0, und 5, 6, 7, 8, 9 -> 1.
Bei der Normalisierung von zwei Ziffern werden zweistellige Zahlen berücksichtigt: 0 - 49 -> 0 und 50 - 99 -> 1. Wenn die Zahl 1,49 auf ganze Zahlen gerundet werden muss, müssen wir dann wirklich 2 bekommen, was 51 Hundertstel im Vergleich zu den verfügbaren 49 Hundertsteln Abstand zu 1 ist?
Das Gleiche gilt für dreistellige, vierstellige, usw.
Aber 1,45 wird auf 2 aufgerundet, aber nur, wenn es vorher auf einen Grad höherer Genauigkeit normalisiert wurde.
v1 = 0 = 1,0000000, v2 = 0 = 2,0000000
v1 = 1 = 1.5000000, v2 = 1 = 1.5000000
v1 = 2 = 1,4500000, v2 = 2 = 1,4600000
v1 = 3 = 1,4550000, v2 = 3 = 1,4550000
es stellt sich heraus, dass, wenn in den Berechnungen der Zahl wurde auf eine höhere Genauigkeit und in den nachfolgenden Berechnungen zu normalisieren diese Zahl auf eine geringere Genauigkeit wird in einem anderen als die einfach normalisiert diese Zahl auf eine geringere Genauigkeit führen.
Es stellt sich heraus, dass, wenn bei der Berechnung die Zahl auf eine höhere Genauigkeit normiert wurde und bei den nachfolgenden Berechnungen die Zahl auf eine niedrigere Genauigkeit normiert wird, das Ergebnis ein anderes ist als wenn die Zahl nur auf eine niedrigere Genauigkeit normiert wird.
Entschuldigung, aber wie erhalten Sie die gewünschten Werte?
Wenn ich die empfohlenen Funktionen verwende, dann:
- In einem Fall erhalte ich einen korrekt gerundeten Wert
0.06-0.02 =NormalizeDouble(0.03999999999999999,2) = 0.04
Die Division wird angenähert und eine Normalisierung ist erforderlich.
- Im zweiten Fall erhalte ich auch eine Rundung, die aber in diesem Fall nicht erforderlich ist
0.06-0.024 = NormalizeDouble(0.036,2) = 0.04
Eine Normalisierung (Rundung) ist hier nicht erforderlich.
Aber wie kann ich normalisieren, anstatt zu runden?
Entschuldigung, aber wie erhalten Sie die gewünschten Werte?
Dafür lohnt es sich, zu formulieren, was die "richtigen Werte" sind ))
Wenn ich die empfohlenen Funktionen verwende, dann:
- In einem Fall erhalte ich einen richtig gerundeten Wert
0,06-0,02 = NormalizeDouble(0,03999999999999999,2) = 0,04
Das Dividieren ist eine Annäherung und ohne Normalisierung geht es nicht.
- Im zweiten Fall erhalte ich auch eine Rundung, die aber in diesem Fall nicht erforderlich ist
0,06-0,024 = NormalizeDouble(0,036,2) = 0,04
Eine Normalisierung (Rundung) ist hier nicht erforderlich.
Aber wie kann ich richtig normalisieren, anstatt die Werte zu runden?
Das obige Beispiel zeigt, dass Sie einen intuitiven Algorithmus verwenden, der die "Richtigkeit" der Normalisierung bestimmt. Im ersten Fall handelt es sich um einen unendlichen Bruch, im zweiten Fall um einen endlichen. Passen Sie Ihren Algorithmus zur Umwandlung der reellen Zahl in die gewünschte Form an.
Obwohl der einfachste Weg - entscheiden im Voraus auf die erforderliche Genauigkeit der Berechnungen.
Dazu lohnt es sich, einfach zu formulieren, was die "richtigen Werte" sind ))
Aus dem obigen Beispiel können Sie ersehen, dass Sie einen intuitiven Algorithmus verwenden, mit dem Sie die "Notwendigkeit" der Normalisierung bestimmen. Im ersten Fall handelt es sich um einen unendlichen Bruch, im zweiten Fall um einen endlichen. Passen Sie Ihren Algorithmus zur Umwandlung der reellen Zahl in die gewünschte Form an.
Am einfachsten ist es jedoch, wenn Sie im Voraus festlegen, welche Genauigkeit Sie benötigen.
Wenn Sie 0,036 (3 Dezimalstellen) wünschen, normalisieren Sie auf 3, nicht auf 2.
Ich habe mich geirrt, bis zu 3 Ziffern sollten normalisiert werden. Ist es möglich, dies zu tun?
Ich habe mich geirrt, bis zu 3 Ziffern sollten normalisiert werden. Wird es so funktionieren?
Hier ist Ihr Code:
Anstelle von 2 setzen Sie 3 ein, und es ist 0,036.