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?
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
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)
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.