Jag vill runda av ett flyttal uppåt så fort talet överstiger ett heltal.
Exempelvis skall divisionen 14/10 ge 2 och inte 1.4. Med andra ord, så fort resultatet överstiger heltalskvoten av divisionen skall det höjas till nästa heltal uppåt.
Hur görs det lämpligtvis i java?
neox83Medlem sedan okt. 2000149 inlägg Hmm, tror inte det finns någon färdig metod för detta men jag är inte säker.
Math-klassen innehåller bara en round(up) metod. Sedan finns NumberFormat men den är mer för att hantera antal decimaler dvs utseendet på talet.
Så här kan då en fullösning på problemet se ut:
double a = 0.4999999999999;
double b = 14.0/10.0;
double c = b+a;
System.out.println((int)Math.round(c));
Först så kan man inte dividera 14/10 och förvänta sig ett decimaltal utan då får man en hettal.
Därför får antingen båda eller en av talen vara decumaltal. Mna kan också casta dem till double vilket kan avara praktiskt om de inte sätts i koden.
Sedan är det bara att öka det tal med 0.49999....
och avrunda det med den vanliga avrundningsmetoden.
Om talet skulle vara ett heltal så kommer denna metod runda ner till den det heltalet.
PeWMedlem sedan juni 200010 432 inlägg Varför inte helt enkelt testa om det finns en rest med modulooperatorn %? ..
c = a/b;
if(a%b)
c+=1;
Om svaret ska vara i heltal, dvs.
En annan variant
Här kommer en annan variant som ska funka om jag inte missförstått ditt problem.
public class Test{
public Test(){
float x = (float)Math.ceil((float)21 / (float)10);
System.out.println("Resultat: "+x+" Egentligt resultat: "+((float)21 / (float)10));
}
public static void main(String\[\] args){
new Test();
}
}
min lösning...
Jag funderade lite kring modulusoperatorn ett tag men
kom fram till föjlande lösning:
c = (int)Math.ceil(noOfMms/b) + 1;
LimeMedlem sedan sep. 2001961 inlägg
spango skrev:
Math.ceil(double a)
Som sagt... varför göra det krångligt.