Ich möchte eine Zahl runden, die auf Verhältnis von zwei Werten basiert.Runden Sie eine Zahl basierend auf einem Verhältnis in C#
Das Verhältnis wird Werte enthalten, die größer oder kleiner als der ursprüngliche Wert sind, wo
ratio = newValue/originalvalue
Wenn newValue> Originalvalue Ich kann rund um die nächstniedrigere Faktor mit:
double NearestLowerFactor(float value, double factor)
{
return Math.Floor(value/factor) * factor;
}
Für Beispiel:
- Faktor = 2
- Verhältnis = 3
- NearestLowerFactor = 2
Wenn newValue < Originalvalue ich zum nächsten Kehrwert des Faktors abzuzurunden möge.
Deshalb, wenn der Faktor 2 ist, würde ich auf Faktoren von 1/2 basierend abzuzurunden mag, ist, dass 1/2, 1/4, 1/8, 1/16, usw.
Zum Beispiel :
- Originalvalue = 8
- newValue = 3
- Verhältnis = 0,375
- NearestLowerFactor = 0,25 oder 1/4.
Wie würde ich in diesem Fall auf den nächsten niedrigeren Faktor aufspulen?
Das ist ausgezeichnet. Ich hätte nie daran gedacht! Ich frage mich, ob es eine Formel gibt, die in beiden Fällen funktionieren würde, also ** newValue> originalValue ** und ** newValue
user1423893
@ user1423893 Versuchen Sie es, es funktioniert. – Rik
Es funktioniert nicht für mich, wenn "Verhältnis = 36" und "Faktor = 16". Können Sie bestätigen, dass Sie 32 mit diesen Werten erhalten? – user1423893