Calcolo dei valori delle celle del database
Domanda
Ho un database con una tabella, contenente due campi interi.
Quando provo a ottenere una percentuale (fieldta / (fieldba + fieldb)), il valore è 0.
double percentage = fieldA+fieldB // WORKS; 5+5=10
double percentage = fieldA / (fieldA+fieldB) // DOES NOT WORK; 5+5=0
.
Allora, qual è il problema qui?Grazie ..
Soluzione
Quando si genera un codice tag, si ottiene 5/10, che come numero intero viene troncato a 0, è necessario eseguire una doppia divisione se si desidera 0,5 come risultato. cioè qualcosa del genere:
double percentage = (double)fieldA/(fieldA+fieldB)
Altri suggerimenti
I Assumi fieldA
e fieldB
sono numeri interi?Se sì, dovresti essere consapevole che dividere due numeri interi comportano anche un numero intero, indipendentemente da ciò che è sul lato sinistro dell'equazione.
Così Dividere fieldA
da (fieldA+fieldB)
Risultati in un valore <1 che si traduce a zero.Vedi Divisione integer su wikipedia.
Per correggere il problema, semplicemente lanciare almeno un operando in un tipo di punto flottante come E.G.:
double percentage = fieldA/(double)(fieldA+fieldB)
. Dal momento che Fieda e Fieldb sono numeri interi, l'espressione fieldA / (fieldA+fieldB)
is del modulo int / int
che significa che utilizzerai la divisione integro, in questo caso - 5/10 = 0
, come la Divisione Integer risolve x = am + b
e in questo caso 5 = a*10 + b
a = 0, b = 5
puoi farlo comunque:
double percentage = (double)fieldA / (fieldA+fieldB);
. Potrebbe essere necessario eseguire il cast dei campi come double prima di applicare l'operazione
prova questo: doppia percentuale= (doppia) campoA / (doppia) (campoA + campoB)
Se entrambi i campi sono integer, quindi l'aggiunta dei due risultati interi anche interer. Prova questo
Float Risultato= (galleggiante) ((A * 100) / (B + A));
Risposta: Risultato= 50.0