je dois garder la granularité dans un travail flou je donc fait une fonction qui reçoit comme paramètres:fonction Java pour préserver la granularité
- la granularité (double entre 0 et 1, 0 non inclus)
- la valeur de transformer, si nécessaire (il est un double supérieur à 0)
et retourne une nouvelle valeur avec la granularité correcte.
Ceci est la fonction I ai:
public static double preserveGranularity(double granul, double value){
double integerValue= (double)(int)value;
if(granul == 1)
return integerValue;
double decimal = value - integerValue;
long factor = Math.round(decimal/granul);
return integerValue + granul*factor;
}
Exemples:
- preserveGranularity (0,25, 7,7) doit renvoyer 7,75
- preserveGranularity (0,01, 0,009) doit retourner 0,01
Cela fonctionne bien pour la plupart des valeurs, mais pas pour tous (par exemple: preserveGranulari ty (0,2, 0,57) = 0,6000000000000001, il doit retourner 0,6)
salutations
P.S. Désolé pour toute erreur que j'ai faite dans cette question, c'est ma première ici
Il n'y a pas vraiment de différence entre '0.6000000000000001' et' 0.6' –
Cela ressemble à une erreur d'arrondi de base 2-> 10 pour moi. – Riking
C'est une erreur minimale, mais cela cause des problèmes. @Riking Je pense la même chose mais comment puis-je le réparer? –