Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

für Javacracks sicherlich kein Problem, aber für mich.

Wie kann ich von einem Double Wert alles hinter der 2.Stelle hinter dem Komma alles wegschmeißen???

Also 1,23265456645-->1,23.

Danke

Hallo!!

Du kannst die Double ja mit 100 multiplizieren, dann runden und danach wieder durch 100 teilen.

Das runden gibt ein Long zurück, Du musst also casten, wenn Du wieder eine Double willst.

Sollte eigentlich das gewünschte Ergebnis bringen.

k.o.b

stimmt, hab ich übersehen.

Wenn man nicht runden will sondern nur abschneiden, dann ist es floor.

Sorry!

k.o.b

  • 1 Jahr später...

hallo,

zum runden habe ich auch mal eine Frage. verstehe das oben nicht so ganz.

ich habe eine Zahl als double und will diese kaufmännisch runden, also 2 Stellen hinter dem komma.

wie muss ich denn das, was oben geschrieben wurde anwenden

als Beispiel:

Die Zahl die ich runden will habe ich in der Variablen Zahl deklariert.

Zahl=123.45678

jetzt möchte ich diese zahl auf zwei nachkommastellen gerundet haben.

Wie lauten dazu die Befehle?

vielen dank

Nur darstellen oder weiter rechnen?

Gruß Jaraz

nur darstellen

aber ich galub ich hab jetzt selbst schon was gefunden.

nämlich mit

Math.round()

Math.rint()

verstehe nur nicht ganz den Unterschied zwischen den beiden

[edit]

ok, zu spät...

[/edit]

in der api stehts:

rint:

Returns the double value that is closest in value to the argument and is equal to a mathematical integer. If two double values that are mathematical integers are equally close, the result is the integer value that is even. [...]

round:

Returns the closest long to the argument. The result is rounded to an integer by adding 1/2, taking the floor of the result, and casting the result to type long. In other words, the result is equal to the value of the expression:

(long)Math.floor(a + 0.5d)[...]

Original geschrieben von haarig

nur darstellen

Dafür gibt es die Klasse DecimalFormat

http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html

Hat auch den Vorteil das man lokalisierte Werte ausgeben kann.

Beispiel:

Locale.setDefault(Locale.GERMAN);

DecimalFormat df = new DecimalFormat("###0.00");

double d = 123.1234;

System.out.println(df.format(d));

Man beachte das Komma bei der Ausgabe, dass bei allen oben genannten, ich nenne es mal "Workarounds", als Punkt dargestellt wird. ;)

Gruß Jaraz

  • 5 Jahre später...

he, ichw eis is schon bisschen alt der thread... habe aber folgendes problem: mein pc wird immer langsam wenn ich mit großen double zahlen dividiere, zumindest glaube ich das es daran liegt. Ich frage mich nun ob es eine möglichkeit gibt bi einer rechnung dem compiler shcon vorher zu sagen das es z.B. höchstens 4 stellen hinter das komma berechnet werden soll?

danke schonma Benschi

mein pc wird immer langsam wenn ich mit großen double zahlen dividiere, zumindest glaube ich das es daran liegt.
Was hast du denn da für einen Rechner? Irgendetwas ohne FPU?

Die Zeit, die eine Fließkommadivision benötigt, sollte von der Größe der Zahl weitestgehend unabhängig sein. Bist du sicher, dass es nur "große" Zahlen sind?

Ich frage mich nun ob es eine möglichkeit gibt bi einer rechnung dem compiler shcon vorher zu sagen das es z.B. höchstens 4 stellen hinter das komma berechnet werden soll?
Wenn du nur 4 Nachkommastellen brauchst, dann rechne doch mit Festkommawerten, d.h. benutz Ganzzahltypen und rechne in Zehntausendsteln.

Bei uns benutze ich stets


import java.text.NumberFormat;


public class Main {

  public static void main(String args[]) {

    NumberFormat nf = NumberFormat.getInstance();


    System.out.println("Default format: " + nf.format(1234567.678));


    nf.setMaximumFractionDigits(2);


    System.out.println("Format with two decimal places: " + nf.format(1234567.678));


  }

}

Diese Umwandlung mache ich immer in einer Methode, die mir einen Wert zurück gibt, den ich auch brauche double oder String.

Es hat noch den zusätzlichen Charme, dass ich die Zahl, falls sie als String kommt, gemäß von Locale formatieren kann.

Oh,sry muss das mal aktualisieren, und entschuldigung das ich auf den alten thread noch geantwortet habe, hab gegoogeld und nicht aufs datum geachtet, meine schuld.

auf jeden fall kann sowas garned an den datentypen liegen, bei double gehen gar keine so großen kommastellen, es liegt wohl einfach am Java, oder an meiner programmierung das es so langsam ist, was weis ich ^^

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.