Come premessa rinvio ad una essenziale, ma efficace ed esaustiva, spiegazione scritta da md9327 sulla funzione Round():
http://www.gambas-it.org/smf/index.php?topic=1865.msg20789#msg20789
Se io scrivo un semplice codice (di cui riporto appresso la parte che ci interessa) rifacendomi al tuo caso:
.......
Paint.Font.Size = 12
Print Paint.Font.Size * 1.3441
' Viene chiesto alla funzione "Round()" di arrotondare il secondo numero decimale:
Print Round(Paint.Font.Size * 1.3441, -2)
End
in console ottengo questi risultati:
16,1292 senza funzione Round();
16,13 con la funzione Round().
Quindi funziona. :-\
quello che credo vuott ti stesse dicendo è che se nel tuo codice scrivi:
If sDevice = "Stampante" Then Paint.Font.Size = Round(Paint.Font.Size * F_GAMBERETTO_STAMPA, -2)
Print Paint.Font.Size
Message(Paint.Font.Size)
il round entra in funzione solo quando l' espressione nell' IF è vera , ovvero quando il device è stampante altrimenti il round non viene eseguito e quindi non viene eseguito l' arrotondamento
...non solo, ma io vedo questa strana riga con Round():
'' Qui è vero non l'avevo arrotondato ora ho provveduto scusa scusa
Round(Paint.Font.Size - 0.1)
Non funziona così questa funzione ! :violent:
Ad ogni modo, a me escono questi risultati in console:
I° Video 19.34
Passo 2 19.33984375
I° Stampa 19.34
Passo 2 19.33984375
Passo 3 stampa 18.5595703125
Passo 4 stampa 25.9892578125
l' intenzione era questa:
Paint.Font.Size = Round(Paint.Font.Size, - 2)
una cosa non capisco... e del resto è un pò :ot: ma perchè dai un sacco di
Paint.Save
Paint.Clip
Paint.Restore
e inoltre metti a true il preserve di
paint.fill e paint.stroke ?
che poi non sfrutti ? o mi sono perso qualcosa io?
.... paint.font.size (giustamente x me) se ne infischia del round e utilizza il valore completo del numero float
Comunque, io ho fatto una prova con un breve e semplice codice.... ed ho verificato che paint.font.size non ha problemi a conservare l'arrtondamento ! (http://levipere.com/wp-content/plugins/smilies-themer/Axendr/50-thumb.gif)
Scusa ma non potevi dimostrarla ???
Comunque guardate un po qui io intravedo delle incongruenze fra il comportamento dei due tipi di ROUND con Quanti e senza :rolleyes:
' Gambas class file
Public Sub _new()
End
Public Sub Form_Open()
Dim f As Float
da.Cached = True
Paint.Begin(da)
Paint.Font.Size = 11
Print Paint.Font.Size ' ===> 11
f = (11 * 0.744)
Print f '===> 8.184
Paint.Font.size = f
Print Paint.Font.size '===> 8.18359375
f = Round(11 * 0.744)
Print f '===> 8
Paint.Font.Size = f
Print Paint.Font.size '===> 8
Paint.Font.Size = Round(11 * 0.744)
Print Paint.Font.size '===> 8
Paint.Font.Size = Round(11 * 0.744)
f = 1.3441
Paint.Font.Size = Round(Paint.Font.Size * f)
Print Paint.Font.size '===> 11
f = Round(11 * 0.744, -2)
Print f '===> 8.18
Paint.Font.Size = f
Print Paint.Font.size '===> 8,1796875
Paint.Font.Size = Round(11 * 0.744, -2)
Print Paint.Font.size '===> 8.1796875
Paint.Font.Size = Round(11 * 0.744, -2)
f = 1.3441
Paint.Font.Size = Round(Paint.Font.Size * f, -2)
Print Paint.Font.size '===> 10.9892578125
Paint.End
End