I have a simple Model class that represents a calculator.

Header file:

```
@class MMCalculator;

@protocol MMCalculatorDelegate <NSObject>

@required - (void)mmCalculator:(MMCalculator *)mmCalulatorFinishedCalculatingValues;

@end

@interface MMCalculator : NSObject

@property (nonatomic, weak) id <MMCalculatorDelegate> delegate;
@property float calculatedPay;
@property float calculatedSavingsForStuff;
@property float calculatedSavingsForProfitFormula;
@property float calculatedSavingsForTaxes;

- (void)calculateValuesWithMonthlyRevenue:(float)monthlyRevenue;
- (float)calculateYourPay:(float)monthlyRevenue;
- (float)calculateSavingsForStuff:(float)monthlyRevenue;
- (float)calculateSavingsForProfitFormula:(float)monthlyRevenue;
- (float)calculateSavingsForTaxes:(float)monthlyRevenue;

@end

```

Implementation file:

```
#import "MMCalculator.h"

#pragma mark - Static Variables
static float const percentageToPayYourself = 0.50f;
static float const percentageToSaveForStuff = 0.20f;
static float const percentageToSaveForProfitFormula = 0.20f;
static float const percentageToSaveForTaxes = 0.10f;

@implementation MMCalculator

#pragma mark - Calculator Methods
- (void)calculateValuesWithMonthlyRevenue:(float)monthlyRevenue
{
    //Call all 4 calculation methods and set calculated properties
    self.calculatedPay = [self calculateYourPay:monthlyRevenue];
    self.calculatedSavingsForStuff = [self calculateSavingsForStuff:monthlyRevenue];
    self.calculatedSavingsForProfitFormula = [self calculateSavingsForProfitFormula:monthlyRevenue];
    self.calculatedSavingsForTaxes = [self calculateSavingsForTaxes:monthlyRevenue];

    //Call delegate method
    [self.delegate mmCalculator:self];
}
- (float)calculateYourPay:(float)monthlyRevenue
{
    return percentageToPayYourself * monthlyRevenue;
}

- (float)calculateSavingsForStuff:(float)monthlyRevenue
{
    return percentageToSaveForStuff * monthlyRevenue;;
}

- (float)calculateSavingsForProfitFormula:(float)monthlyRevenue
{
    return percentageToSaveForProfitFormula * monthlyRevenue;
}

- (float)calculateSavingsForTaxes:(float)monthlyRevenue
{
    return percentageToSaveForTaxes * monthlyRevenue;
}

@end

```

Here are the key things I am looking for feedback on:

1. Right now I store the class's calculated values in public properties so they can be accessed by other classes. Should it be the class's responsibility to store these calculated values in it's properties, or should it be the responsibility of the class that is calling this class's methods?.
2. Did I define my static variables correctly? Are they following best practices?
3. What do you think of the class's delegate method?
4. Am I following best practices by using floats to represent money? I have a feeling that I should be using something else.