Stringausgabe in Exponentialschreibweise
Verfasst: 26.02.2006 18:38
Ich habe das heute gebraucht und musste mir da etwas behelfen, da PB das nicht nativ kann ;(
Folgende Funktion wandelt eine Double-Variable in einen String um. Das Ausgabeformat ist dabei stets in der wissenschaftlichen Exponentialschreibweise (z.B. 1.23E-34) gehalten.
Bei konstruktiven Verbesserungsvorschläge bin ich ganz Ohr 
Folgende Funktion wandelt eine Double-Variable in einen String um. Das Ausgabeformat ist dabei stets in der wissenschaftlichen Exponentialschreibweise (z.B. 1.23E-34) gehalten.
Code: Alles auswählen
; German forum: http://forums.purebasic.com/german/viewtopic.php?p=78868
; Author: freedimension
; Date: 26. Februar 2006
; OS: -
; Demo: No
; Version: PB 4.0
Procedure.s StrExp(d.d)
Protected *sp.BYTE
Protected result.s
Protected exp.l, sign.l, margin.l
If d < 0.0
sign = -1
Else
sign = 1
EndIf
d = Abs(d)
If d = 0.0
result = "0.0E+0"
Else
If d < 1.0
While d < 1.0
d * 10.0
exp - 1
Wend
ElseIf d >= 10.0
While d >= 10.0
d * 0.1
exp + 1
Wend
EndIf
If sign = -1
result = "-"
EndIf
result + StrD(d, 20)
len = Len(result)
*sp = @result + len - 1
While *sp\b = '0' And len > margin + 3
margin + 1
*sp - 1
Wend
result = Left(result, len - margin)
result + "E"
If exp < 0
result + Str(exp)
Else
result + "+" + Str(exp)
EndIf
EndIf
ProcedureReturn result
EndProcedure
d.d = 20.000025
Debug StrExp(d)
