Auf eine ganze Zahl aufrunden

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hello,

gibt es in Java eine Funktion welche mir auf einen Integer aufrundet, wenn zum beispiel 1.1 - 2.0 rauskommt, dann soll das Ergebnis auch 2 sein,
Sobald bei einem Ergebnis eine Kommastelle auftritt, soll auf eine ganze Zahlaufgerundet werden,

Gibts sowas?
 
M

MiDniGG

Gast
Hm. Ist wahrscheinlich etwas umständlich aba ich würd es so in der Art machen:

Schaun ob die Zahl nen Punkt enthält; die Zahl die vor dem Punkt um Eins erhöhen, aber nur, wenn keine 0 dahinter steht...

Aber geht bestimmt auch einfacher ;)

Edit: Achso. Dazu würd ich s in nen String umwandeln, dass de schön beim Punkt trennen kannst. Und zum Schluss eben in Integer wandeln.
 
S

SlaterB

Gast
naja, mit String wirds dann wirklich unschön,
es gibt Math.ceil(), und dann auf int casten
 

ARadauer

Top Contributor
aufrunden -> ceil

System.out.println((int)Math.ceil(1.1d));
System.out.println((int)Math.ceil(2d));
 

Soqinho

Mitglied
Ich bin mir nicht sicher, aber gibts dafür nicht

Math.floor(deineZahl)

Math.floor schneidet die Nachkommastellen weg.

Dann musst du nur noch +1 rechnen und schon hast du dein Ergebnis ...
 

ARadauer

Top Contributor
ja gute idee sogino, nachdem wir 2 funktionierende lösungen gefunden haben, kommst du daher und machst aus einem 1.0 eine 2

;-)
 

ARadauer

Top Contributor
nein funktioniert nicht

bei 2.0 soll 2 raus kommen, wenn du abrundest und +1 rechnest kommt aber 3 raus
 
G

Gast

Gast
Hätte noch eine Frage dazu,
ich habe einen Vector<String> in dem unterschiedlich viele Strings drinnen sein können, sagen wir z.B.: 34, dann rufe ich eine Methode auf, wo ich einen Vector übergeben soll, wo immer nur max. 16 Strings drinnen sein sollen, bei 34 Strings rufe ich die Methode dann 3 mal auf mit 2 mal 16 Stings und zum Schluß mit 2 Strings,

Ich wollte das jetzt so realisieren:

Code:
vec hat z.B.: 34 Einträge
int amountInvocation = (int)Math.ceil(vec.size()/16d);
for (int i = 0; i < amountInvocation; i++)
      invokeMethode((Vector<String>)text.subList(i*16, i*16+16));

Da habe ich jetzt das Problem, dass ich beim letzten Aufruf nur mehr 2 Strings im Vector habe,
Gibts da eine vernünftige Lösung?
 
S

SlaterB

Gast
> bei 34 Strings rufe ich die Methode dann 3 mal auf mit 2 mal 16 Stings und zum Schluß mit 2 Strings

du willst also beim letzen Mal nur 2 Strings in der Liste haben bzw. arbeitest aktiv darauf hin

> Da habe ich jetzt das Problem, dass ich beim letzten Aufruf nur mehr 2 Strings im Vector habe,

und dann beschwerst du dich darüber?

das wäre so als wenn du dein Auto gelb anmalst und dich dann beschwerst, dass es gelb ist,

wenn du es so willst, dann tue es, ansonsten nicht,
ich sehe dabei keine echte Frage?
 

Marco13

Top Contributor
Wenn immer (möglichst) gleich wiele drin sein sollen, aber nie mehr als 16, kann man das was basteln... schnell hingeschrieben:
int max = 16;
int aufrufe = (int)Math.ceil((float)list.size() / max);
int proAufruf = list.size() / aufrufe;
int letzerAufruf = listSize() - (aufrufe-1) * proAufruf;

Ergibt bei 34 Elementen:
int max = 16;
int aufrufe = ceil(34/16) = ceil(2.xxx) = 3;
int proAufruf = 11
int letzerAufruf = 34-2*11 = 12

Grenzfälle beachten!
 

ARadauer

Top Contributor
ich finds lustig.
34 durch 16 teilen und sich beschwehren, dass es einen rest gibt *lol* wenn heute freitag wäre, würd ichs verstehen! aber um gottes willen es ist erst mittwoch, was wird da noch kommen......
 

thE_29

Top Contributor
Ich hab das auch erst vor kurzem entdeckt und gebe das mal gleich weiter ;)

BigDecimal kann das sehr fein!

Das würde zB so aussehen
Code:
    new BigDecimal(0.0f).setScale(0, BigDecimal.ROUND_HALF_UP).longValue();

Also bei setScale ist der erste Parameter die Anzahl der Nachkomastellen!
Und der 2te gibt den Rundungsmodus an! Also auf, ab, etc..
 

thE_29

Top Contributor
Naja, mit dem bigDecimal kann man auch sagen ROUND_UP!

Dann rundet es immer auf! Wie gesagt, super Methode ;)
 

Marco13

Top Contributor
Ich find's auch lustig: Da gibt es eine einfache, praktische und perfekt auf das gestellte Problem passende Funktion wie Math.ceil(...), und dann wird bei so einer Trivialbockmistfrage was von BigDecimal erzählt, oder empfohlen, das ganze mit Strings zurechtzumurksen. Erinnert mich an den Klassiker
Code:
public boolean isNegative(int i)
{
    if (String.valueOf(i).startsWith("-") == true)
    {
        return true;
    }
    else if (String.valueOf(i).startsWith("-") == false)
    {
        return false;
    }
    else 
    {
        throw new RuntimeException("Achtung, ungültige Zahl!");
    }
}
 
M

MiDniGG

Gast
Hey, wegen dem String murksen. Das kam von mir und ich hab als erster geantwortet, weil ich noch nie was von Math.ceil(...) gehört hab. also halt mich da mal raus!!! :(

^^

Aber der Klassiker hat was ^^
 
S

SlaterB

Gast
dann merk dir wenigstens für alle Zahl-Operationen wie z.B. auch das beliebte 'x-te Nachkommastelle herausfiltern':
ein String-Objekt zu erzeugen ist teuer und damit tendentiell immer die falsche Wahl
 
M

MiDniGG

Gast
OK. Ich schreibs mir hinter die Ohren :)

Und schlagt mich, falls ich es je wieder erwähne!!! :)
 

thE_29

Top Contributor
@Marco13: es geht einfach drum, das Math.ceil eigentlich nicht fürs runden da ist, sondern das hier macht:

Returns:
the smallest (closest to negative infinity) floating-point value that is not less than the argument and is equal to a mathematical integer.

Was in dem Fall halt das gleiche ist! Würde der TE es auf 1e Kommastelle brauchen, würde es am Besten mit BigDecimal funktionieren.


Aber von der Beschreibung her, hätte/wäre ich nicht so schnell auf ceil gekommen :)
 

Marco13

Top Contributor
Ja - es wird halt aufgerundet, und wenn das, was "ceil" macht, kein Runden ist (worüber ich nicht philosophieren will) dann war die Fragestellung falsch :wink: Aber für das Runden zu einer bestimmten Nachkommastelle wäre die Lösung mit BgDecimal vermutlich garnicht verkehrt, weil man damit vermutlich eine höhere Genauigkeit erreichen kann, als mit sowas wie "runde(zahl*100)/100"....
 

thE_29

Top Contributor
Jo, also ich runde immer mit BigDecimal, weil ich eben immer diese 0.00000001 Differenzen Blödsinn gehabt habe!

Ok, Ceil macht auch runden ;) Aber es ist halt nicht als die "Rundungsfunktion" angedacht. (sonst würds auch explizit im Kommentar stehen)
 

thE_29

Top Contributor
Steht da irgendwas von round? Da wird einfach die nächste ganzzahlige Zahl gesucht!

Bei einer "richtigen" Rundungsfunktion sollte/kann man Parameter übergeben, die das Rundungsverhalten setzen.
 
S

SlaterB

Gast
aja,
Collections.sort ist also auch keine erwähnenswerte Sortieroperation,
denn da kann man ja das Sortierverfahren nicht übergeben ;)
 

thE_29

Top Contributor
Sicher! ;) (einen Comparator)

Außerdem wird da mit Klassenobjekten gearbeitet und die setzen schon die Reihenfolge (compareTo) fest :)
 
S

SlaterB

Gast
Comparator & compareTo legen nur die Ordnung/ Reihenfolge fest,
nicht das Sortierverfahren (BubbleSort & Co.)

war ja eh nicht ernst gemeint, aber solche hohlen Gegenargumente lasse ich auf keinen Fall zählen ;)
 

thE_29

Top Contributor
Achso, das Sortierverfahren hast du gemeint!

Das kannste ja bei Bigdecimal auch nicht ändern! Also wie er rundet! Vielleicht konvertiert er es ja in einen String :bae: Oder er multipliziert es mal den Kommastellen und nimmt Math.ceil ;)
 

Marco13

Top Contributor
Diese :bae: und :wink: sind garnicht mal sooo berechtigt: Ich habe mal mit BigDecimal rumhantiert, und mich dann gewundert, warum das Programm (das u.a. BigDecimals in doubles konvertiert hat) doch so EXTREM langsam war. Als ich mir dann angesehen habe, wie die Konvertierung von BigDecimal in double abläuft, bin ich beinahe abgebochen:
:autsch: :autsch: :autsch:
Code:
    public double doubleValue(){
	if (scale == 0 && intCompact != INFLATED)
	    return (double)intCompact;
	// Somewhat inefficient, but guaranteed to work.
	return Double.parseDouble(this.toString());
    }
:autsch: :autsch: :autsch:
"Somewhat inefficient" ist gut. Für viele potentielle, praktische Anendungen ist das damit schlicht und einfach unbrauchbar :(
 

thE_29

Top Contributor
Oho!
Naja, wer weiß was Math.ceil macht! Das liegt ja in irgendeiner dll rum.

Manchmal isses halt besser, man sieht den Source erst gar nicht ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
KonradN Mal eine Frage zu Binary Serialization Allgemeine Java-Themen 15
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
dokan wie kann ich eine funktionierende Suchleiste erstellen Allgemeine Java-Themen 1
B Wie erstelle ich dazu eine Abfrage ob der Button gedrückt wurde? Allgemeine Java-Themen 8
J Integration pay Pale in eine JavaFx Desktop Application Allgemeine Java-Themen 1
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
8u3631984 Strukturiertes Logging : Jedes Feld in eine seperate Zeile - aber wie ? Allgemeine Java-Themen 2
berserkerdq2 Gibt es eine saubere Dokumentation von Jfoenix? Allgemeine Java-Themen 1
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
A Wie schreibe ich eine For-Schleife in ein Stream API um? Allgemeine Java-Themen 12
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
T Eine Frage des Designs Allgemeine Java-Themen 2
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
H Eine Linie verkürzen Allgemeine Java-Themen 5
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
berserkerdq2 Wie synchronisiere ich eine for-Schleife Allgemeine Java-Themen 12
berserkerdq2 Wie mache ich in IJVM eine if verzweigung? Allgemeine Java-Themen 27
F Gibt es mittlerweile eine Alternative zu DaisyDiff Allgemeine Java-Themen 2
_user_q Was brauche ich, um eine eigene "Search for updates"-Funktion einzubauen? Allgemeine Java-Themen 1
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
pizza_dox_9999 Wie füge ich eine "eigene" ScriptEngine dem ScriptEngineManager? Allgemeine Java-Themen 3
F Kennt ihr eine Library um 2 HTML Seiten zu diffen? Allgemeine Java-Themen 8
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
OnDemand Anzeigen was eine Applikation macht Allgemeine Java-Themen 1
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Eine Frage zu den Threads und Task Allgemeine Java-Themen 1
Tobero Wie bekomme ich in welchem Quadrat sich eine Position in einem Grid befindet Allgemeine Java-Themen 11
Tobero Wie kann man eine Poisson Disc Sampler? Allgemeine Java-Themen 7
M Openjdk - gibt es auch eine Openjre? Allgemeine Java-Themen 7
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
J Öffnen eine jar-Datei Allgemeine Java-Themen 11
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
S Habt ihr eine Idee wie man Serializierung testen kann..? Allgemeine Java-Themen 6
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
N Eine stelle der Fibonacci-Zahlenfolge ausgeben. Allgemeine Java-Themen 4
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
W Collections Suche etwas Sorted-List-Artiges...hat jemand eine Idee? Allgemeine Java-Themen 13
L Methoden Über Reflections eine Methode mit aufrufen Allgemeine Java-Themen 3
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
J Datenstruktur für eine Map erstellen Allgemeine Java-Themen 2
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
pkm Kann eine ServerSocket-Klasse nicht stateful sein? Allgemeine Java-Themen 4
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
I Eine Anwendung so gut wie möglich beschützen Allgemeine Java-Themen 9
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
X Wie mache ich hier eine Rekursion rein ? Allgemeine Java-Themen 7
K OOP Suche Hilfe + Erklärung für eine Hausaufgabe Allgemeine Java-Themen 1
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M Login in eine Webseite mit Java Allgemeine Java-Themen 3
A NetBeans Suche Programmierer für eine Belegarbeit Allgemeine Java-Themen 11
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
L Übergabe an eine eher einfache Java- Applikation wegen Kündigung Allgemeine Java-Themen 1
C Ein Iterator ist eine Implementierung des Interface Iterable? Allgemeine Java-Themen 2
M Schlüsselworte Was ist eine Java Spezifikation + JSR? Allgemeine Java-Themen 11
E RMI NULL-Pointer-Exeception wenn der RMI-Proxy eine Methode deligiert Allgemeine Java-Themen 2
E RMI FWH: RMI- Wie erstelle ich stubs dynamisch, bzw. unterdrücke eine Statisch-Warnung? Allgemeine Java-Themen 0
J Eine bestimmte Zahl im Integer ändern Allgemeine Java-Themen 9
Q-bert Strings aus der JList in eine Datenbank speichern Allgemeine Java-Themen 1
D Möglichkeit mit GAE eine Table auszulesen und eine csv zu schreiben Allgemeine Java-Themen 22
S Korrekte Pfadangaben damit eine .jar Datei unter Windwos läuft. Allgemeine Java-Themen 24
D Eine Forschleife mit Threads abarbeiten um es zu schneller zu machen. Ist das möglich? Allgemeine Java-Themen 20
S Wie kann ich eine kleine Stelle in meinem Code mit multiplen Threads abarbeiten..? Allgemeine Java-Themen 20
B Gibt es eine Funktion die den Datentyp einer Variablen ermittelt? Allgemeine Java-Themen 8
R bei eclipse von java in eine andere programmiersprache wechseln? Allgemeine Java-Themen 2
D Pivot-Wahl beim QuickSort steigert die Effizienz, eine Lüge??? Allgemeine Java-Themen 17
C Eclipse einstellen, dass eine bestimmte JDK benutzt werden soll Allgemeine Java-Themen 3
M Klassen Eine Klasse in mehreren Klassen einbinden Allgemeine Java-Themen 11
A Best Practice Java - eine Art Plugin-Struktur Allgemeine Java-Themen 3
S wie rufe ich mit .jar datei eine .bat auf? Allgemeine Java-Themen 15
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
perlenfischer1984 Functionsparameter prüfen und eine Exception werfen !? Allgemeine Java-Themen 11
J Mehrere Wörter getrennt in eine Array einlesen, wie ? Allgemeine Java-Themen 7
E Methoden Hat jemand eine gute Lösung? Allgemeine Java-Themen 5
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
Exdroid BlueJ Wie bekomme ich die Ausgabe in eine TXT Datei? Allgemeine Java-Themen 2
G Methoden Aus einem Event, wo ich weiß, dass es ausgeführt werden wird, eine Get-Methode basteln Allgemeine Java-Themen 8
F Wie kann ich auf einem System prüfen, ob eine lib verfügbar ist? Allgemeine Java-Themen 2
Tausendsassa Interface Eine Gui von einer anderen schließen lassen Allgemeine Java-Themen 3
S Threads Kann mir jemand helfen eine parallele Hilfsklasse zu implementieren..? Allgemeine Java-Themen 3
S Best Practice Brauche eine Idee für eine Java Projekt! Allgemeine Java-Themen 11
P Zwei ArrayLists: Ohne die eine überhaupt anzurühren, wird sie verändert Allgemeine Java-Themen 2
M Eine Datei im Speicher erneut laden(?) Allgemeine Java-Themen 1
V Gibt es eine Möglichkeit die Internet auslastung mit Java auszulesen Allgemeine Java-Themen 11
L Drop Emails von Outlook in eine JList Allgemeine Java-Themen 5
P Wie funktioniert das Feedback eines Klicks auf eine Java GUI Allgemeine Java-Themen 10
P Dezimalzahl in eine Binärzahl umrechnen Allgemeine Java-Themen 12
M Eine static-Methode verlassen Allgemeine Java-Themen 2
X HTTP Auslesen der Ergebnisse von einer Webseite und in eine Liste packen Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben