PDA

Visualizza la versione completa : [DELPHI] Numero con due cifre decimali


pegaso22
31-01-2007, 13:59
Ciao a tutti,
sto utilizzando db paradox, vorrei impostare un campo numerico obbligatoriamente on 2 cifre decimali, come posso fare?

Per ora il campo è di tipo N, quando in inserimento digito un valore tipo 12,50 mi tiene solo 12,5.

Fatemi sapere.
Grazie mille.

alka
01-02-2007, 03:04
Non è un problema di inserimento, in cui il valore dipende dalla precisione del campo, ma di visualizzazione e di formato utilizzato a questo scopo.

Aggiungi il tuo campo come "persistente" facendo doppio clic sul componente che rappresenta la tua tabella dati (richiamando così il Field Editor) e selezionando "Add all fields"; cerca il campo relativo e imposta la proprietà DisplayFormat del campo tramite l'Object Inspector.

Puoi trovare ulteriori informazioni su questa proprietà di cui sono dotati tutti i campi (TField) all'interno della Guida in linea di Delphi, assieme ad alcuni esempi.

Ciao! :ciauz:

pegaso22
01-02-2007, 12:13
Sei stato chiarissimo, ho sistemato tutto.
Restando sempre nel discorso ho un altra domanda da farti:
i valori che inserisco (15 campi) li sommo nel momento in cui li digito e faccio visualizzare il totale in una varibile; la variabile è di tipo double, anche questa perde gli zeri dopo la virgola ma vorrei impostarla come gli altri campi con 2 numeri decimali obbligatori.
Come posso fare?

Nikk11
01-02-2007, 12:53
Non si può impostare la variabile.
Puoi formattare la stringa che rappresenta la variabile con la funzione "formatfloat" e visualizzarla come vuoi.

Ciao :ciauz:

alka
01-02-2007, 13:31
Originariamente inviato da Nikk11
Non si può impostare la variabile.
Puoi formattare la stringa che rappresenta la variabile con la funzione "formatfloat" e visualizzarla come vuoi.

Esatto. Vale lo stesso discorso fatto per i campi.

Un valore numerico non ha una precisa formattazione, tutt'al più ha una precisione o una rappresentazione, ma il numero di decimali da utilizzare è un problema che riguarda le stringhe e il loro ottenimento dalla conversione di un valore numerico.

Ciao! :ciauz:

pegaso22
01-02-2007, 13:34
Grazie per i consigli!!
Ho provato così però non va:


Label6.Caption := FormatFloat(FloatToStr(valore1),0.00);

dove valore 1 è una variabile di tipo double.
Com'è impostato adesso mi elimina le virgole (ES. 12,50 diventa 125)

Cosa sto sbagliando?

Nikk11
01-02-2007, 18:21
Originariamente inviato da pegaso22
Grazie per i consigli!!
Ho provato così però non va:


Label6.Caption := FormatFloat(FloatToStr(valore1),0.00);

dove valore 1 è una variabile di tipo double.
Com'è impostato adesso mi elimina le virgole (ES. 12,50 diventa 125)

Cosa sto sbagliando?

se cerchi formatfloat nell'help di Delphi trovi risposta a tutte le tue domande ... con tanto di esempi !:madai!?:

:ciauz:

pegaso22
01-02-2007, 18:22
Ho visto l'help e gli esempi ma non ho trovato una soluzione funzionante...

pegaso22
07-02-2007, 10:48
:rollo:

Nikk11
07-02-2007, 12:42
Liberamente copiato dall'help di DELPHI 7 :fagiano:


Delphi syntax:

function FormatFloat(const Format: string; Value: Extended): string; overload;
function FormatFloat(const Format: string; Value: Extended; const FormatSettings: TFormatSettings): string; overload;

C++ syntax:

extern PACKAGE AnsiString __fastcall FormatFloat(const AnsiString Format, Extended Value);
extern PACKAGE AnsiString __fastcall FormatFloat(const AnsiString Format, Extended Value, const TFormatSettings FormatSettings);

Description

FormatFloat formats the floating-point value given by Value using the format string given by
Format. The following format specifiers are supported in the format string:



Se leggi, c'è scritto che nel primo parametro ci va la stringa del formato "0.00"
e nel secondo ci va il valore!

quindi quello che serve a te è


Label6.Caption := FormatFloat('0.00',valore1);



Non mi sembrava così difficile
:fagiano: :madai!?:

Loading