You deserved it


#1


https://www.codecademy.com/courses/close-the-super-makert/0/7?curriculum_id=506324b3a7dffd00020bf661#


Your bill is NaN

Oops, try again. false


function StaffMember(name,discountPercent){
    this.name = name;
    this.discountPercent = discountPercent;
}

var sally = new StaffMember("Sally",5);
var bob = new StaffMember("Bob",10);

// Create yourself again as 'me' with a staff discount of 20%
var me = new StaffMember("Rachael",20);


var cashRegister = {
    total:0,
    lastTransactionAmount: 0,
    add: function(itemCost){
        this.total += (itemCost || 0);
        this.lastTransactionAmount = itemCost;
    },
    scan: function(item,quantity){
        switch (item){
        case "eggs": this.add(0.98 * quantity); break;
        case "milk": this.add(1.23 * quantity); break;
        case "magazine": this.add(4.99 * quantity); break;
        case "chocolate": this.add(0.45 * quantity); break;
        }
        return true;
    },
    voidLastTransaction : function(){
        this.total -= this.lastTransactionAmount;
        this.lastTransactionAmount = 0;
    },
    // Create a new method applyStaffDiscount here
    applyStaffDiscount: function(employee){
        this.total=((100-employee.discountPercent)*this.total)/100.0
    },
    
    
};

cashRegister.scan('eggs',1);
cashRegister.scan('milk',1);
cashRegister.scan('magazine',3);
// Apply your staff discount by passing the 'me' object 
// to applyStaffDiscount
cashRegister.applyStaffDiscount("me");


// Show the total bill
console.log('Your bill is '+cashRegister.total.toFixed(2));


#2

me is a variable identifier, not a string expression.

cashRegister.applyStaffDiscount(me);

#3

It says "Your bill is 13.74" and "Oops, try again. false"


#4

I have the exact same problem and also I don't understand this line
console.log('Your bill is '+cashRegister.total.toFixed(2));
If somebody could explain the .toFixed(2)??


#5

Can we simplify this?

this.total *= 1 - employee.discountPercent / 100

I don't see any issues with the code, otherwise. It may be that the lesson check doesn't fix the digit count and the float that resulted didn't agree with the one expected.

The console output is a string expression. When we concatenate a number and a string, the number is converted (cast) to a string and joined. .toFixed() modifies the converted string (the number) by rounding(1) to the specified number of decimal digits.

 > (Math.PI).toFixed(2)
=> '3.14'

As we can see, JS converts the number to a string before applying the modifier.

  1. Rounding is done using the 4/5 rule. Down on 4, up on 5.

#6

This fixed it! Thank you for your help.


#7

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.