Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    389

    [Delphi] - PercentToValue

    codice:
    function PercentToValue(Perc100, Perc: Integer): Double;
    begin
      Result := Round((Perc100 / 100) * Perc);
    end;
    
    function ValueToPercent(Perc100, Value: Integer): Double; 
    begin 
      Result := Round((Value / Perc100) * 100); 
    end;
    Vorrei che però mi risultasse un valore espresso da 2 cifre decimali quando converto da Percentuale a Valore.



    Come fare?

  2. #2

    è un calcolo matematico

    fai

    Result := (Round (((Perc100 / 100) * Perc) * 100)) / 100

    e il gioco è fatto...


  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Re: [Delphi] - PercentToValue

    Originariamente inviato da cla80
    [code]
    Vorrei che però mi risultasse un valore espresso da 2 cifre decimali quando converto da Percentuale a Valore.
    Secondo me, è un'inutile perdita di precisione l'esclusione di cifre decimali dal valore Double.

    E' meglio se specifichi quante cifre decimali vuoi avere utilizzando una "maschera di formattazione" appropriata; ad esempio, puoi specificare il formato nella proprietà DisplayFormat di ciascun campo persistente di cui disponi. Impostandola a 0,.00, otterrai due cifre decimali nella sola rappresentazione visuale.

    Ad ogni modo, stai attendo al modo in cui Round ti arrotonda le cifre: non usa il metodo fiscale che si adotta generalmente, ma il metodo statistico (detto anche "Banker's Rounding", che arrotonda al numero pari più vicino.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    389

    ...

    Se non Round , che funzione mi consigli di utilizzare???

    Aiutoo

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Re: ...

    Originariamente inviato da cla80
    Se non Round , che funzione mi consigli di utilizzare???
    Se usi Delphi 6 o una versione superiore, esiste anche la funzione SimpleRoundTo.

    Ad ogni modo, non ti ho detto di non usare Round, ti ho solo avvertito sul suo principio di funzionamento che può essere fuorviante; poi, se questo principio è ininfluente sui calcoli che devi effettuare, tanto meglio.

    Ad esempio, se devi eseguire arrotondamenti di importi, in genere si applica l'algoritmo fiscale e pertanto la Round non è adatta, così come non è adatto l'uso del tipo Double (che è influenzato dal difetto di precisione del trattamento riservato ai numeri in virgola mobile da parte della CPU).

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    389

    ...

    Bravo alka, esatto devo fare arrotonamenti fiscali,
    cosa si utilizza di solito, simpleRoundTo ???

    Aiuto...?

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Re: ...

    Originariamente inviato da cla80
    Bravo alka, esatto devo fare arrotonamenti fiscali,
    cosa si utilizza di solito, simpleRoundTo ???
    Genericamente, si utilizzano tipi NUMERIC o DECIMAL per quanto riguarda il database: si tratta di valori decimali, ma memorizzati su "interi", quindi non influenzati dall'errore di precisione nella gestione di numeri a virgola mobile.

    Dal lato Delphi, esiste il tipo Currency appositamente progettato per i campi valuta.

    La proprietà DisplayFormat per i campi valuta dovrebbe essere sufficiente a regolare la visualizzazione con il numero di decimali voluto applicando l'arrotondamento più consono; in caso contrario, l'uso di SimpleRoundTo (vedi Guida in linea) può essere d'aiuto per i calcoli tramite codice.

    Ciao!
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.