semble une question simple mais par exemple .. mais c'est en C pas Java
rond à la prochaine .05 en C p> donc mon but est que j'ai J'ai essayé après l'exemple suivant mais je n'ai pas fonctionné :( ci-dessous seulement la sortie de la valeur d'origine. Je voulais que ce soit 1,5 p> %. 1f code> format
float code> ou
double code> ou
gros décimal code> et vouloir
7 Réponses :
Multiplier (et plus tard divisant) par 2, pas 20, devrait faire le tour. P>
omg ça marche !! : D merci! J'aurais dû étudier le développeur de mathématiques! Je pourrais même faire le même tour avec le sol () aussi, génial
Voici une méthode simple: Ceci double la valeur, prend son plafond et la coupe en deux. p> p>
double nearestPoint5 = Math.ceil(d * 2) / 2;
Voir le Big Décimal Javadoc sur pourquoi une chaîne est utilisée dans le constructeur
Sans utiliser une fonction, vous pouvez faire
double rounded = (double)(long)(x * 2 + 0.5) / 2;
La formule ci-dessous ne fonctionne pas bien pour le numéro comme 2.16 La réponse correcte doit être 2.0, mais la méthode ci-dessus donne 2,5 p> Le code correct doit être : p>
Certaines des autres réponses ronds incorrectement ( math.round code> doivent être utilisées, pas
math.floor code> ou
math.ceil code>), et D'autres ne fonctionnent que pour l'arrondi à 0,5 (qui est la question posée, oui). Voici une méthode simple qui tourne correctement au double arbitraire le plus proche, avec un chèque pour assurer qu'il s'agit d'un nombre positif.
public static double roundToNearest(double d, double toNearest) {
if (toNearest <= 0) {
throw new IllegalArgumentException(
"toNearest must be positive, encountered " + toNearest);
}
return Math.round(d/toNearest) * toNearest;
}