Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: delphi variabili

  1. #1

    delphi variabili

    Ciao a tutti,
    come posso dichiarare una variabile numerica ma non per forza intera(integer)?
    Grazie.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,310
    Il senso della tua domanda mi appare un poco oscuro...

    Le variabili possono essere dichiarate utilizzando i tipi scalari a disposizione: DateTime, String, Boolean, Integer, Cardinal...cosa intendevi?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Cardinal è un numero con la virgola?
    Non l'ho uso mai... se no quale devo usare per assegnare numeri con la virgola?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,310
    Cardinal è un numero intero a 32 bit senza segno.

    Per i valori in virgola mobile, puoi usare Double, Extended...

    Se cerchi sulla Guida in linea, troverai tutti i tipi di Delphi con la corrispondente occupazione in byte, i range dei valori e la loro precisione (nel caso di virgola mobile).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Ti spiego il mio problema:
    io assegno a
    Label55.Caption := CurrToStrF('12345,6789',ffcurrency,2)

    a questo punto ho: label55 := 12345,68

    se poi faccio:
    label56.caption := currtostr(strtocurr(label55.cation) * 2);
    mi da errore!!!

    come posso risolvere?

  6. #6
    come errore mi dà:
    12.345,68 is not a valid floating point value

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,310
    Innanzitutto, usa un tipo appropriato per le valute (Currency) e dichiara una variabile che possa contenere il valore da visualizzare poi nella Label. Evita le conversioni multiple e usa direttamente il valore della variabile per fare i calcoli, che andrai nuovamente a visualizzare in un'altra Label quando serve.

    Inoltre, le funzioni di formattazione sono esclusive per la visualizzazione, quindi non è detto che aggiungendo simboli come rappresentazione di migliaia e decimali formattati in un certo modo si riesca, alla fine, a riconvertire tutto nel tipo di dati originale (Currency).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Ho già fatto ciò che hai scritto(+ o -),
    il fatto è che a me serve avere a video dei valori che abbiamo solo 2 numeri decimali( per fare ciò faccio (CurrToStrF('12345,6789',ffcurrency,2)) visto che il valore currency ha 4 cifre decimali), poi mi serve sommare questi valori che ho a video perchè se io sommo valori currency con 4 cifre decimali e poi li faccio diventare a 2 cifre dopo la somma, i calcoli non vengono giusti.

    SPERO DI ESSERMI SPIEGATO NON TANTO MALE.

  9. #9
    procedure TForm1.Button1Click(Sender: TObject);
    var
    x: currency;
    k: currency;
    begin
    x:= 1121211.123456;
    Label1.Caption := CurrToStrF(x,ffnumber,2);
    k:= x * 2;
    Label2.Caption := CurrToStrF(k,ffNumber,2);

    end;
    SE PUOI,
    PROVA QUESTA PROCEDURA, QUESTA DA' IL RISULTATO CHE IO NON VOGLIO.

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,310
    Originariamente inviato da pegaso22
    poi mi serve sommare questi valori che ho a video perchè se io sommo valori currency con 4 cifre decimali e poi li faccio diventare a 2 cifre dopo la somma, i calcoli non vengono giusti.
    Il valore Currency è specifico per le valute...sei sicuro che faccia al caso tuo?

    Si tratta di un tipo di dato che ti permette di memorizzare un valore in virgola mobile utilizzando comunque, internamente, lo stesso meccanismo di memorizzazione degli interi: in definitiva, non risente degli effetti collaterali di precisione del Double, ad esempio.

    Puoi scegliere autonomamente quanti decimali inserire nel valore Currency; se vuoi aggiungere o togliere decimali per i tuoi calcoli, considera anche una soluzione triviale ma forse funzionante, cioè moltiplicare i valori per 100, fare la somma e dividere nuovamente il totale per 100 (per correggere l'arrotondamento).

    Credo che ci sia un problema strutturale nella scelta del tipo di dato e nel suo trattamento. Quale grandezza stai cercando di memorizzare? Perchè devi passare da 4 decimali a 2? Da dove provengono i dati?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.