Ich habe einen Schwimmer, der einen beliebigen Wert auf der positiven oder negativen Skala haben kann.Ich brauche einen eleganten Weg, um einen Skalar (Art von) zu normalisieren
Wenn der Float kleiner als 1 oder größer als -1 UND nicht 0 ist, muss er auf 1 oder -1 gerundet werden.
Ich habe eine Funktion, die ich gemacht habe, die den Trick tut, aber ich habe das Gefühl, es gibt eine elegante inline mathy Art, dies zu tun, aber ich kann nicht mit einem kommen.
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float NormalizeScalar(float input)
{
if ((input > -1) && (input < 1))
return (input == 0) ? 0 : (input < 0) ? -1 : 1;
return input;
}
Irgendwelche Vorschläge?
Perfekt und elegant. Gute Arbeit, um das Rad nicht neu zu erfinden. –
Dies wird tatsächlich einen Skalar "normalisieren". Für meine Lösung kann ich ** verwenden (Math.Abs (Eingabe)> 1? Eingabe: Math.Sign (Eingabe)) **, die die Leistung nicht weiter zu beeinträchtigen scheint. Für alle, die an den Benchmarks interessiert sind, die ich gelaufen bin, könnt ihr sie [hier] finden (http://pastebin.com/v8Wstvu3). Die Ergebnisse: 1: ** 350 **, 2: ** 400 **, 3: ** 400 **, was zeigt, dass es nur geringfügig langsamer war, den eleganteren Ansatz zu verwenden. Vielen Dank! – WHol