2010-07-21 7 views
11

Quando si tengono valori percentuali nelle variabili c'è una preferenza tra trattenerli come numeri interi vs frazioni. Vale a dire la variabile deve contenere numeri compresi tra 0 e 100 o tra 0,00 e 1,00? In entrambi i casi, la variabile che contiene i valori è di tipo decimale.C#: memorizzazione delle percentuali, 50 o 0,50?

Il database che sto interagendo con accade per memorizzarli come numeri interi da 0 a 100.

Nota: sto usando la parola "numero intero" per indicare i valori nel range da 0 a 100 se questi valori può contenere componenti frazionari (es. 25.75). Non so in quale altro modo descrivere la differenza tra le due gamme di valori percentuali

risposta

25

Sarei propenso a memorizzarli come da 0 a 1, quindi non è necessaria alcuna coprioggetto quando si utilizza il numero in un calcolo.

L'utilizzo di un numero compreso tra 0 e 100 è più un modo di visualizzazione/leggibilità del numero. Quando visualizzi la percentuale puoi usare String.Format("{0:P},percentage) che si aspetta che il numero sia compreso tra 0 e 1 ma verrà visualizzato da 0 a 100.

+0

secondo. È più facile lavorare con percentuali nell'intervallo 0-1 .. e normalmente lo si moltiplica solo di un altro numero se si desidera disegnare una barra di avanzamento o qualcosa del genere, quindi non ci saranno davvero errori di arrotondamento significativi. – mpen

+0

0-1 rende sicuramente più facile la matematica e se porti un valore come 0.2 in Excel hai solo bisogno di formattare la cella come percentuale e verrà visualizzato come 20% –

3

Se si utilizzano campi in virgola mobile (float, decimal, double), quindi 50.0 e 0.50 avranno lo stesso grado di precisione. Quindi, da questo punto, prenderei le decisioni in base a quali campi simili in tabelle simili facciamo, per dare un senso di unità del design.

+0

Uhm ... in quel caso esatto, sì , ma per quanto riguarda '10.0' vs' 0.10'? Non è affatto lo stesso! – mpen

+0

... in realtà? – maxwellb

+0

@ Marco: cosa stai cercando di indicare? Diverse forme di archiviazione impongono diversi modi di utilizzare i numeri. – Karmastan

0

Se stai facendo molti calcoli con le frazioni, vuoi archiviare il numero numeratore e denominatore separatamente come numeri interi. Quando si utilizzano le frazioni per rappresentare i decimali ripetuti o non ripetuti, è possibile ottenere errori di arrotondamento che aumentano più operazioni si hanno.

Se stai solo memorizzando e presentando il numero, allora non importa.

Che matematica intendi fare con questo numero, se presente?

0

È possibile utilizzare i doppi per rappresentare entrambe le percentuali e 0-1. Ma se si sceglie di memorizzare la percentuale come "numero intero", sconsigliamo l'uso di numeri interi, il che potrebbe limitare se si desidera rappresentare il 12,3%, ad esempio.

0

Credo che questo sia banale ... entrambi sono gli stessi

intendo in termini di calcoli/info visualizzazione ...

00.50 is cool for calculations 

50.00 is cool for displaying 
+8

Non sono la stessa cosa, per un fattore di 100! – benPearce