Seite 2 von 2

Verfasst: 08.03.2009 15:56
von Kaeru Gaman
mk-soft hat geschrieben:Pow(...) rechnet auch mit Double
sure?

Verfasst: 08.03.2009 16:51
von mk-soft
Muss dir Recht geben. Liegt aber nicht man Pow sondern an das multiplizieren und diffidieren.

Mit der Zweiten Methode komm ein genaueres ergebnis herraus.

Code: Alles auswählen

Procedure.d fctRoundD(varNr.d, varPl.i = 2)

  ;by Konrad Marfurt + ("" by) Luke Chung + Karl Donaubauer + to PB by mk-soft
  Protected result.d
  result = Round(varNr * Pow(10.0,varPl), #PB_Round_Nearest) / Pow(10.0,varPl)
  ProcedureReturn result
  
EndProcedure


Procedure.d fctRound(varNr.d, varPl.i = 2)

  Protected temp.s
  temp = StrD(varNr, varPl)
  ProcedureReturn ValD(temp)
    
EndProcedure

Debug "Round 1"
Debug fctRoundD(12.345678901234567890,2)
Debug fctRoundD(12.345678901234567890,8)
Debug fctRoundD(12.345678901234567890,12)

Debug "Round 2"
Debug fctRound(12.345678901234567890,2)
Debug fctRound(12.345678901234567890,8)
Debug fctRound(12.345678901234567890,12)
Float und Double sind durch ihre Strukture immer ungenau.

Verfasst: 08.03.2009 16:53
von Kaeru Gaman
> Float und Double sind durch ihre Strukture immer ungenau.

sic.

deswegen sagte ich ja
>> die Wahrscheinlichkeit ist hoch, dass es am IEEE 754 selber liegt.