SQL Funktion Round in PB umwandeln

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

mk-soft hat geschrieben:Pow(...) rechnet auch mit Double
sure?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag 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.
Zuletzt geändert von mk-soft am 08.03.2009 16:59, insgesamt 1-mal geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten