2016-09-15 3 views
0

Ich versuche, eine Nummer einer Basis aufzuteilen und dann die beiden Zahlen zu trennen, um unterschiedliche Ausgaben zu erhalten. (Denken Sie daran, ich habe gerade bearbeitet, meine Antwort ist die Lösung). Dies wird hier gelassen, damit Leute, die ein ähnliches Problem haben, eine Lösung finden können. Danke euch allen!Aufteilen der Basis einer Zahl und Trennen von Resten

Das ist also die Idee:

Wenn Zahl> = 10 & & der Basis 10

Dann geben Sie mir günstigeren Preis auf 10 Einheiten

wenn Nummer < = 0 & & nicht Basis 10

Dann fügen Sie den Rabatt für die Nummer, die 10 Einheiten darin hat und den Rest ohne den Rabatt (sagen wir 100%) die Einfachheit halber die Zahlen)

So ein praktisches Beispiel zu machen Wenn ich 25 Einheiten x bestellen (bei 1 $ pro Stück) und 15 Einheiten (bei 1 $ pro Stück) von y ist der Preis:

x 20 Einheiten = 0 $ x 5 Einheiten = $ 5 Gesamt

y 10 Einheiten = $ 0 y 5 Einheiten = $ 5 gesamt

Das ist ein bisschen schwierig ist, und das ist, was ich bisher habe:

double discountedmNI = (mNI - ((mNI/100)*10)) * mNIC; 
double discountedmNIP = mNI - ((mNI/100)*10); 

if(mNIC >= 10 && mNIC % 10 == 0){ 

    System.out.println("mNI " + discountedmNIP + " " + mNIC); 
    System.out.println(discountedmNI); 

} 

else if (!mNIC % 10 == 0){ 

    System.out.println("mNI " + mNI + mNIC); 
    System.out.println(mNI * mNIC); 

} 

Ich glaube nicht, ich definiere getrennt die 10 Einheiten richtig

Vielen Dank!

+0

Die Negation von 'Wenn Nummer> = 10 && von Basis 10 'ist' Wenn Nummer <10 || nicht Basis 10'. –

+0

Nun ich denke, ich sollte die Kachel ändern, es ist nicht wirklich eine Negation, aber meine Antwort ist die Antwort, ich warte nur 2 Tage, um es zu bestätigen, weil es funktioniert –

+0

Ich gebe nicht wirklich versuchen, das Problem zu verstehen. mNI muss auch ein Double sein, da es mit Int und Division wahrscheinlich 0 werden würde. Und in Financial Software ist BigDecimal gegenüber Double vorzuziehen, da Double keine feste Genauigkeit hat und Zahlen annähert. –

Antwort

0

EUREKA!

double discountedmNIP = mNI - ((mNI/100)*10); 
    int mNIC2 = (mNIC % 10); 
    double mNIC2disc = (mNI * mNIC2); 
    double discountedmNI = (mNI - ((mNI/100)*10)) * (mNIC - mNIC2); 


    if(mNIC >= 10){ 

     System.out.println(discountedmNIP + " " + (mNIC - mNIC2) + " " + discountedmNI); 
     System.out.println(mNI + " " + mNIC2 + " " + mNIC2disc); 

    } 



    else{ 

     System.out.print(mNI + " " + mNIC); 
     System.out.print(mNI * mNIC); 


    } 

    double sum = (mNI + discountedmNI + discountedRh + rH); 

    System.out.println('\t'); 
    System.out.println("Total order cost " + sum); 

All ich tun muss, ist, die Einheiten% 10 zu ergreifen, die die linke Seite integer oder doppelte von der rechten Seite (linke Seite Eingang vom Benutzer) wird dividieren

und wird mir den Rest, wenn Ich mache diese Variable von der ursprünglichen Variablen subtrahiert!

Noch einmal, dieser kleine Schritt dauerte eine ganze Nacht, um es herauszufinden, und ist in der Tat einfach. Dies ist für eine Klasse, und wenn Sie in dieser Klasse sind und Sie lesen (obwohl Sie vielleicht ein wenig graben müssen, um zu finden, welche Aufgabe diese ist), möchte ich Ihnen nur sagen, dass es Spaß macht, zu programmieren! Ich bin nicht sarkastisch Ich liebe diese Art von Problemen!

Gezeichnet:

, dass ausländische Kerl;

EUREKA wieder!

Viel Spaß!

0

Ich hoffe ich habe dich richtig verstanden. Ich bekomme, dass Sie einen Gesamtpreis berechnen möchten, der aus zwei Elementen besteht: dem Preis für nicht reduzierte Artikel und einem Preis für reduzierte Artikel.

// The following three values are just example assumptions. 
float discountInPercent = 100.0f; 
float itemsOrdered = 5004.0f; 
float itemPriceNormal = 5.0f; 

// Here the price for one discounted item gets calculated. 
// Please remember that the discount is given in percentage. 
float itemPriceDiscounted = itemPriceNormal * ((100.0f - discountInPercent)/100.0f); 

// Calculate the count of items that get discounted and those that 
// will get priced normally. 
float itemsDiscounted = Math.floor(itemsOrdered/10.0f); 
float itemsNotDiscounted = itemsOrdered % 10; 

// Finally calculate the two elements of the total price and sum it up. 
float priceDiscounted = (itemsDiscounted * itemPriceDiscounted); 
float priceNormal = (itemsNotDiscounted * itemPriceNormal); 
float totalPrice = priceDiscounted + priceNormal; 

System.out.println("Price discounted: %.2f" + priceDiscounted); 
System.out.println("Price non-discounted: %.2f" + priceNormal); 
System.out.println("Price total: %.2f" + totalPrice); 
+0

Nein, nicht wirklich traurig es ist mein schlecht, dass ich hier bin verwirrend ist irgendwie ein Beispiel: Artikel x Artikel y wenn Einzelteil x> = 10 dann nehmen die 10 Einheiten und den Rabatt auf das anzuwenden, was nur 10 Einheiten die übrigen Einheiten nicht wenn ich also 25 Einheiten x kaufen werde ich den Rabatt auf 20 Einheiten aber auf den Rest 5 Einheiten habe ich den vollen Preis tun gleiche mit Postens y zahlen Tut mir leid, es ist irgendwie ein dozy –

+0

Vielen Dank Ich fand es, wenn Sie neugierig sind, überprüfen Sie es! –

Verwandte Themen