WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 09.03.2002, 23:01   #1
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard java - runden auf bestimmte dezimalstellenanzahl

Code:
import java.text.*;

double zahl = 1234.56789;

DecimalFormat df = new DecimalFormat("#0.00");
System.out.println(df.format(zahl));
ergibt dann als ausgabe 1234,57

nur ist das ein STRING, angenommen, ich würde mit der zahl weiterrechnen wollen, wie würde der typ erhalten bleiben, anstatt in einen string umgewandelt zu werden?
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 09.03.2002, 23:11   #2
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard Re: java - runden auf bestimmte dezimalstellenanzahl

Zitat:
Original geschrieben von RaistlinMajere

ergibt dann als ausgabe 1234,57
nur ist das ein STRING, angenommen, ich würde mit der zahl weiterrechnen wollen, wie würde der typ erhalten bleiben, anstatt in einen string umgewandelt zu werden?
Du hast doch
Code:
double zahl = 1234.56789;
immer noch. Verwende diese zahl zum weiterrechnen.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 09.03.2002, 23:20   #3
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

ist mir schon klar, daß ich das kann.
nur ich hätte gern gewußt, ob es denn keine möglichkeit gäbe, aus dem ergebnis der rundung heraus noch etwas arithmetisches zu machen. rein interessehalber. oder müßte ich sämtliche arithmetische operationen zuerst machen und erst am schluß dann die rundung vollführen? was wäre, wenn der gerundete wert ein zwischenergebnis wäre, daß ich nicht nur ausgeben, sondern das ich auch in irgendeiner rechnung in der gerundeten form weiterverwenden will?

es muß doch eine möglichkeit geben, auf eine bestimmte stellenzahl zu runden und doch keine typenumwandlung vorzunehmen, so daß ich das ergebnis arithmetisch weiterverwerten kann.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 09.03.2002, 23:34   #4
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

Du kannst Dir natürlich auch über DecimalFormat.parse() einen NumberValue besorgen und über doubleValue() wiederum die gerundete double -Zahl zum Weiterrechnen holen.

Nachzulesen im
Java 2 Platform SE v1.3.1 .
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 10.03.2002, 00:53   #5
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

Code:
double zahl2 = doubleValue(df.parse(zahl));
funzt ned... was mach ich falsch?
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 10.03.2002, 09:55   #6
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

Code:
double zahl2 = (df.parse(zahl)).doubleValue();
Probier's aus! Ich habe es jetzt nicht selber getestet.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 10.03.2002, 11:43   #7
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

Code:
import java.text.*;

public class runden {

    double zahl = 1234.56789;   
    DecimalFormat df;
    
    public runden() {
        df = new DecimalFormat("#0.00");
        System.out.println(zahl);
        System.out.println(df.format(zahl));
        System.out.println(df.parse(zahl).doubleValue());
    }
    
    public static void main(String[] nix) {
        new runden();
    }
}

runden.java [12:1] cannot resolve symbol
symbol : method parse (double)
location: class java.text.DecimalFormat
System.out.println(df.parse(zahl).doubleValue());
^
1 error
Errors compiling runden().
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 10.03.2002, 13:51   #8
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

hm, ist mir mittlerweile schon klar, warum das nicht geht (nur leider kann ich den beitrag nimma editieren), den parser mit double zu füttern, ist natürlich unsinn.
ich müßte zuerst das ergebnis als string haben und dann damit den parser füttern, nur das problem ist, daß im string das kommazeichen kein PUNKT mehr ist, sondern ein BEISTRICH, damit kommt der parser dann auch nicht mehr zurecht.
mir ist jetzt nur noch eine reichlich unelegante methode eingefallen, nämlich die:

Code:
double zahl = 1234.5678;
String zahlstring;
DecimalFormat df = new DecimalFormat("#0.00");        

zahlstring = df.format(zahl); // -> 1234,67
zahlstring = zahlstring.replace(',', '.');
System.out.println(Double.parseDouble(zahlstring)+1);
das +1 hab ich nur drangegeben, weil ich wissen wollte, ob ich jetzt wirklich mit dem parsergebnis (sozusagen eine doppelte überprüfung, weil wenns nicht so wäre, müßte ja schon beim parsen irgendein fehler kommen) weiterrechnen kann, ja, kann ich.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 10.03.2002, 19:17   #9
JosefS
Veteran
 
Registriert seit: 07.01.2002
Alter: 44
Beiträge: 268


Standard Re: java - runden auf bestimmte dezimalstellenanzahl

Zitat:
Original geschrieben von RaistlinMajere
Code:
import java.text.*;

double zahl = 1234.56789;

DecimalFormat df = new DecimalFormat("#0.00");
System.out.println(df.format(zahl));
ergibt dann als ausgabe 1234,57

nur ist das ein STRING, angenommen, ich würde mit der zahl weiterrechnen wollen, wie würde der typ erhalten bleiben, anstatt in einen string umgewandelt zu werden?
nimm:
Code:
double zahl = 1234.56789;
double dNeueZahl;

dNeueZahl = double ( int (zahl * 100)) / 100;
System.out.println( dNeueZahl );
JosefS ist offline   Mit Zitat antworten
Alt 10.03.2002, 19:37   #10
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

ist ein interessantes verfahren, nur bist du dir sicher, daß das nicht
Code:
dNeueZahl = (double) ((int) (zahl * 100)) / 100;
heißen sollte?

außerdem hat das ganze einen haken, du bekommst nämlich als ergebnis 1234.56, die letzte stelle wird also nicht gerunden, sondern es werden lediglich die unerwünschten kommastellen abgeschnitten.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:19 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag