Wie ich feststellen konnte, hat RS 2010r1 Probleme bei Operationen mit
großen Zahlen (UInt64) :-(
In RS2011r4 scheinen die zumindes bezüglich der Division noch zu
bestehen:
dim nr as UInt64
nr=1152921504606846974
nr=nr/2
nr=nr*2
MsgBox "1152921504606846974="+Str(nr)
Ich erhalte bei mir "1152921504606846974=1152921504606846976". Kann
das jemand bestätigen?
Weitere Funktionen die nicht korrekt arbeiten (nur in RB2010r1 getestet)
sind Val() und format(z,"###,###,###,###,###,###,###"). Die Probleme
treten erst bei sehr großen Zahlen auf (etwa >60 Bit ?).
Lösung für Val():
Function Val64(s as String) As UInt64
dim z1,z2 as UInt64
Dim s1,s2 as String
if len(s)>10 then
s1=Right(s,10)
s2=Left(s,len(s)-10)
z1=val(s1)
z2=val(s2)
z2=z2*10000000000
z2=z2+z1
Return z2
else
Return val(s)
end
Lösung für format(z,"###,###,###,###,###,###,###"):
Function format64(z as UInt64) As String
dim r,s,t as String
s=Str(z)
if len(s)>15 then
t=Right(s,3)
do
s=left(s,len(s)-3)
r=Right(s,3)
t=r+"."+t
if len(s)<4 then
exit
end
loop
Return t
else
Return format(z,"###,###,###,###,###,###,###")
end
Eine Lösung für die Division muss ich noch basteln.
MfG, Metti.