Hallo

hier die Berechnung laut Axi in eine Funktion verpackt. Die Faktoren sind so gewählt, dass die gesamte Berechnung im Integer-Typ abgewickelt werden kann.

Code:
Declare Function Skalierung (pInput as Word) as Integer

Dim wInput as Word
Dim iSkala as Integer

for wInput = 0 to 1023

   iSkala = Skalierung (wInput)

   Print wInput; " " ; iSkala

next

end


Function Skalierung (pInput as Word) as Integer

' Nullpunkt herstellen
Skalierung = pInput - 516
' Wertebereich hat unter 0 einen Faktor von 5,12  (512/100)
'                   über 0 einen Faktor von 5,07  (507/100)
' daher werden diese in zwei verschiedenen Wegen berechnet
' Um eine aufwändige Berechnung mit Fließkommazahlen zu vermeiden
' werden diese Faktoren mit 32/163 (=1/5,09375)
'                       und 32/162 (=1/5,0625)
' Genauer wäre für den Bereich unter 0 die Faktoren 32/164 (=1/5,125)
' Hier wird aber 4 (sollte -100) in der Ganzzahlenarithmetik auf -99 abgeschnitten

' * 32 ist beiden Bereichen gemeinsam
Skalierung = Skalierung * 32
select case Skalierung
   case is < 0
       Skalierung = Skalierung / 163
   case is > 0
       Skalierung = Skalierung / 162
end  SELECT
End Function