Come gestire la sum della percentuale arrotondata non essendo 100?

Supponiamo di avere un elenco di elementi con un numero intero:

USA: 3 people Australia: 2 people Germany: 2 people 

Se calcoliamo la percentuale di ciascun valore rispetto alla sum sull’intero elenco, otteniamo:

 USA: 3/(3+2+2)*100 = 42.857...% Australia: 2/(3+2+2)*100 = 28.571...% Germany: 2/(3+2+2)*100 = 28.571...% 

e se lo aggiriamo, otteniamo:

 USA: 43% Australia: 29% Germany: 29% 

La sum 43 + 29 + 29 = 101 non è 100, e sembra un po ‘strana per l’utente del software. Come risolveresti questo problema?

opzione 1

Se sei preoccupato per i risultati che sembrano un po ‘strani per l’utente, vorrei mettere una nota in calce riguardo ai risultati che menzionano che le percentuali sono state arrotondate e il mio non totale al 100%. È ansible visualizzare il messaggio al livello di programmazione solo quando l’arrotondamento causa questo comportamento.

 USA percentage: 43 Australia percentage: 29 Germany percentage: 29 

*Percentages may not total 100 due to rounding

opzione 2

Dato che stai usando Ruby, suggerirei di usare numeri razionali . In questo modo non perdi la precisione quando necessario. Invece della nota a piè di pagina, potresti visualizzare la percentuale con i numeri razionali accanto ad essa come segue:

 USA percentage: 43 (3/7) Australia percentage: 29 (2/7) Germany percentage: 29 (2/7) 

Opzione 3

Includere più posizioni decimali in modo che l’errore di arrotondamento sia meno grave:

 USA percentage: 42.9 Australia percentage: 28.6 Germany percentage: 28.6 

Questo risulta in 100.1 invece di 101.

È ansible fare riferimento al metodo di restringimento più grande utilizzato nelle elezioni: Wikipedia: il metodo di restringimento più grande

Nel tuo caso, lo hai

 USA: 42.857... Australia: 28.571... Germany: 28.571... 

Se prendi la parte intera, ottieni

 USA: 42 Australia: 28 Germany: 28 

che aggiunge fino a 98 e vuoi prenderne altri due. Ora, guardi le parti decimali, quali sono

 USA: 0.857... Australia: 0.571... Germany: 0.571... 

e prendi quelli più grandi finché il totale raggiunge i 100. Se prendi gli Stati Uniti, il totale diventa 99 e ne vuoi prendere uno in più. Qui sorge il problema. Dato che ti rimane un pareggio di 0,571 … tra Australia e Germania, se prendi entrambi, il totale sarà 101. Quindi hai due modi per scegliere:

(a) Se vuoi fortemente che il totale sia 100, basta prendere l’Australia e non prendere più:

 USA: 43 Australia: 29 Germany: 28 

(b) Se preferisci rispettare il fatto che Australia e Germania sono in parità, ti fermi a quel punto:

 USA: 43 Australia: 28 Germany: 28 

I componenti non possono sumrsi ai totali a causa dell’arrotondamento. Standard nei rapporti statistici.

I trucchi torneranno a morderti nella prossima tabella, rapporto o appendice. Non puoi tenere traccia delle modifiche. Sembra divertente solo per le persone che non leggono questo tipo di rapporti.

O si. Non è un errore di arrotondamento.

Puoi “barare” un po ‘sumndo tutti i risultati arrotondati ma l’ultimo e dando all’ultimo il valore di 100 – la sum precedente …

In questo caso, avresti:

 USA = 43 Aus = 29 Ger = 28 (100 - (43 + 29)) 

Ma questo è solo un trucco sporco … Dovresti piuttosto seguire la soluzione più onesta / accurata data da Matt poiché la mia sembra indicare che la percentuale della Germania è inferiore a quella australiana.