Von Double zu Long umwandeln

Eugenie

Mitglied
Hallo liebes Forum,
ich stehe vermutlich stark auf dem Schlauch und wollte daher meine Frage hier loswerden, in der Hoffnung, dass mir jemand meinen Fehler erklären kann.

Aufgabe: eine Methode zu implementieren, sodass die UVP des Artikels abzüglich des (prozentualen) Rabatts ausgegeben wird. Bei der Umwandlung von double zu long ist auf korrekte (kaufmännische) Rundung zu achten.

Meine Methode:
public long getPrice(Article article) {
long price = Math.round(article.getUVP()- discount*100);
return price;

die UVP ist long, discount ist in double gespeichert; ich habe es mit math.round versucht, mit cast und komme im Internet auch nicht weiter. Wie löse ich das?
 
Vermutlich:
Java:
public long getPrice(Article article) {
long price = (long)Math.round(article.getUVP()- discount*100);
return price;

Falls nein, was klappt nicht?
 
Der Code funktioniert, aber das Ergebnis ist falsch. Ich habe eine Software, die den Code mit Zahlen ausprobiert und eben nach Fehlern sucht und dann sagt sie mir
java.lang.AssertionError: Price not as Expected expected:<159800> but was:<1598>
 
Das ist ja auch so ein bisschen meine Frage- muss ich überhaupt? also UVP ist die unverbindliche Preisempfehlung als long gespeichert (wie genau ist das dann eigentlich?) und discount ist der Rabatt, der eben als double gespeichert ist (also z.B. 0.2 bei 20%)
 
Naja ... UVP * 0.2 ist ja nur der Rabatt, d.h. das muss man vom UVP abziehen, also UVP - UVP *0.2, aber hier kann man UVP ausklammern, also einfach UVP *(1 - 0.2) und dementsprechend UVP*(1-discount)
 

Neue Themen


Zurück
Oben