rundungsfehler beim berechnen von spaltenbreiten
Verfasst: Do, 02.02.2006 08:40
hallo
in einem makro werden werte von spaltenbreiten in cm z.b. 1,10 aus einem dialog ausgelesen und festgelegt. anschließend läuft ein makro und bildet die summe über die spalten. dabei kommt es zu rundungsfehler in der 2. nachkommastelle ab der 5.spalte.
zeigt man die werte in einer msgbox an, werden 4 nachkommastellen gezeigt, die nicht genau den eingegeben werten entsprechen. dies trifft auch bei standardbreiten von starcalc zu.
meine frage ist nun:
kann ich die variablendeklaration mit double/single so beeinflussen, dass diese nur 2. nachkommastellen erfasst oder kann ich das problem bei den nummernfeldern des dialogs lösen.
freue mich auf eine antwort
grüße klaus
in einem makro werden werte von spaltenbreiten in cm z.b. 1,10 aus einem dialog ausgelesen und festgelegt. anschließend läuft ein makro und bildet die summe über die spalten. dabei kommt es zu rundungsfehler in der 2. nachkommastelle ab der 5.spalte.
Code: Alles auswählen
'--Makro, das Gesamtbreite der Spalten A bis K ermittelt
Sub GesamtBreiteErmitteln
Dim iGesamtbreite as double
calcDoc = ThisComponent
oAktivesBlatt = calcDoc.CurrentController.activeSheet
'--F/N-Schleife für die Spalten A bis K
For I = 0 to 10
'ermittelt die Gesamthöhe der jeweiligen Zeilen und zeigt diese im Dialog an
iGesamtbreite = iGesamtbreite + oAktivesBlatt.Columns(I).width/1000
oDlg.getControl("numGesamtbreite").value = iGesamtbreite
next
End Sub
Code: Alles auswählen
Sub testSpBreite
Dim oDlg as Object
Dim calcDoc as Object
Dim oAktivesBlatt as Object
Dim i as integer
Dim h as double
calcDoc = ThisComponent
oAktivesBlatt = calcDoc.CurrentController.activeSheet
for i = 0 to 10
h = h+oAktivesBlatt.Columns(i).width/1000
msgbox("Zeile: "+i+Chr(13)+"Höhe: "+h,1, "Test")
next
End Sub
kann ich die variablendeklaration mit double/single so beeinflussen, dass diese nur 2. nachkommastellen erfasst oder kann ich das problem bei den nummernfeldern des dialogs lösen.
freue mich auf eine antwort
grüße klaus