private final static int L1_MAX_SCORE = 30;
private final static int L2_MAX_SCORE = 150;
public void UpdateLevel(int score) {
double progress;
//returns 0.0
progress = score/(L2_MAX_SCORE - L1_MAX_SCORE) * 100;
//works correctly.
progress = (double) score/(L2_MAX_SCORE - L1_MAX_SCORE) * 100;
Merci.Pourquoi dois-je lancer cette instruction pour obtenir un résultat?
Je trouve étrange que la définition de la variable (progrès) en tant que double ne lance pas automatiquement Ce comportement. – user432209
Java évalue l'expression du côté droit d'abord avant de l'affecter à la variable, donc je crois qu'au moment où le type de données est pris en compte, le résultat est déjà un int si vous ne lancez pas. – BoltClock
Pourquoi le type de double affecte-t-il le calcul? Stockez un int comme un double est valide, et diviser ints et attendre un int est valide. Donc 'double progrès = 3/4; progrès == 0 »est une déclaration tout à fait légitime. Si vous définissez automatiquement 3/4 comme division flottante, comment changeriez-vous la syntaxe pour que vous puissiez faire ce qu'elle fait maintenant? – Falmarri