Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: ffabio - Marzo 15, 2012, 03:14:08 pm

Titolo: funzione FormatFloat(',.00',ris)
Inserito da: ffabio - Marzo 15, 2012, 03:14:08 pm
secondo le indicazioni della guida che mi ha girato xinyiman uso la funzione per avere i due decimali .

FormatFloat(',.00',ris) 

quindi se ho 17.8   mi restituise 17.80

vorrei che se io scrivo 100 non mi scrivesse 100.00  ??? idee ?? grazie a tutti

come faccio a dire ha decimali o non ha decimali ??? funzione mod ????

grazie a tutti .



Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: nomorelogic - Marzo 15, 2012, 03:37:59 pm
ciao
prova con
FormatFloat(',.##',ris) 
Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: ffabio - Marzo 16, 2012, 10:21:46 am
non va .
  :-\   

idee ?? 

Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: nomorelogic - Marzo 16, 2012, 11:19:39 am
forse non ho capito...
si tratta di arrotondare un numero o di visualizzare un numero?

puoi fare qualche esempio?
Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: ffabio - Marzo 16, 2012, 11:56:49 am
Si scusa,

dopo varie operazioni devo visualizzare un numero che per me è un prezzo quindi vorrei visualizzare i decimali .

se ottengo 7.3       vorrei vedere 7.30
se mi viene 80       vorrei vedere   80

ho anche dei numeri negativi  es - 4.3        vorrei vedere -4.30   vuol dire che devo dare 4 euro e trenta .

grazie
Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: nomorelogic - Marzo 16, 2012, 12:15:51 pm
prova così:

dichiara da qualche parte (giusto per farlo un po' figo :D)

Codice: [Seleziona]
function iif(exp: boolean; ValueTrue, ValueFalse: string): string;
begin
   if exp then
      result := ValueTrue
   else
      result := ValueFalse;
end;


e poi usalo così:
Codice: [Seleziona]
  value := 7.3;
  ShowMessage( FormatFloat( iif(value = trunc(value), ',.##', ',.00') ,
                            value )
             );

  value := 80;
  ShowMessage( FormatFloat( iif(value = trunc(value), ',.##', ',.00') ,
                            value )
             );

Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: ffabio - Marzo 16, 2012, 12:35:24 pm
grazie ci provo subito  :)
Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: nomorelogic - Marzo 16, 2012, 12:44:10 pm
che poi...

la cosa corretta sarebbe

Codice: [Seleziona]
iif(value = trunc(value), '0', ',.00')
Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: ffabio - Marzo 16, 2012, 02:00:11 pm
grazie funziona
Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: ffabio - Marzo 16, 2012, 02:51:39 pm


scusa solo un problema  se  value := 0;

mi scrive solo il . ???   idee ??

grazie
Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: nomorelogic - Marzo 16, 2012, 03:05:56 pm

già provato questo?

che poi...

la cosa corretta sarebbe

Codice: [Seleziona]
iif(value = trunc(value), '0', ',.00')
Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: ffabio - Marzo 16, 2012, 03:17:42 pm
 si se ho 0 mi scrive .000

e invece di scrivermi -0,01  mi scrive -.011


???? idee ??

grazie
Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: nomorelogic - Marzo 16, 2012, 03:33:19 pm
così dovrebbe andare

Codice: [Seleziona]
 ShowMessage( FormatFloat( iif(value = trunc(value), '#,##0;-#,##0;0', '#,##0.00;-#,##0.00;0') ,
                           value )
            );
Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: ffabio - Marzo 16, 2012, 03:51:16 pm
si giusto ho solo un caso con un numero grande


che mi scrive 1.753,11 e quando faccio la conversione da stringa  a numero si arrabbia e lo vuole scritto  :  1753,11  .   non vuole il punto delle migliaia

hai qualche idea ????

grazie
Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: nomorelogic - Marzo 16, 2012, 04:07:04 pm
devi rimuovere tutti i delimitatori delle migliaia...
http://www.freepascal.org/docs-html/rtl/sysutils/strtofloat.html

prova con
http://www.freepascal.org/docs-html/rtl/sysutils/stringreplace.html
Titolo: Re:funzione FormatFloat(',.00',ris)
Inserito da: ffabio - Marzo 16, 2012, 04:24:06 pm
grazie, ho usato la StringReplace  :)

a volte le soluzioni piu' semplici non vengono in mente  :)

grazie mille