Pregunta

Can someone confirm for me this is the correct way to convert a NSString to an NSDecimalNumber? I have a label where when you click the button the price shows up, which is called totalPriceCalculated and then I also have all the strings where the calculations are made. Thanks in advance!

- (IBAction)calculateTotalPrice:(id)sender {
    NSString *priceStringOne = [hiddenPriceOneTF text];
    float priceFloatOne = [priceStringOne NSNumberFormatter];

    NSString *priceStringTwo = [hiddenPriceTwoTF text];
    float priceFloatTwo = [priceStringTwo floatValue];

    NSString *priceStringThree = [hiddenPriceThreeTF text];
    float priceFloatThree = [priceStringThree floatValue];

    NSString *priceStringFour = [hiddenPriceFourTF text];
    float priceFloatFour = [priceStringFour floatValue];

    NSString *quanityStringOne = [quanityFirstTF text];
    float quanityFloatOne = [quanityStringOne floatValue];

    NSString *quanityStringTwo = [quanitySecondTF text];
    float quanityFloatTwo = [quanityStringTwo floatValue];

    NSString *quanityStringThree = [quanityThirdTF text];
    float quanityFloatThree = [quanityStringThree floatValue];

    NSString *quanityStringFour = [quanityFourthTF text];
    float quanityFloatFour = [quanityStringFour floatValue];

    float totalAmount = priceFloatOne * quanityFloatOne + priceFloatTwo * quanityFloatTwo + priceFloatThree * quanityFloatThree + priceFloatFour * quanityFloatFour ;
    NSString *result = [NSString stringWithFormat:@" $ %0.2f", totalAmount];

    [totalPriceCalculated setText:result];

    NSString *totalPrice = totalPriceCalculated.text;
    NSDecimalNumber *totalPriceNumber = (NSDecimalNumber *)totalPrice;
}

NSString *priceStringOne = [hiddenPriceOneTF text];

float priceFloatOne = [priceStringOne NSNumberFormatter];

UPDATED*

PayPalPayment *payment = [[PayPalPayment alloc] init];
payment.amount = [NSDecimalNumber decimalNumberWithString:totalPriceNumber];
payment.currencyCode = @"USD";
payment.shortDescription = @"Hipster t-shirt";
¿Fue útil?

Solución

Another option is to create the decimal number from the float:

NSDecimalNumber *totalPriceNumber = [NSDecimalNumber decimalNumberWithDecimal:[@(totalAmount) decimalValue]];

Otros consejos

According to the Apple docs, the prefered way is to use +decimalNumberWithString:; hope that helps.

Try:

totalPriceNumber = [[NSDecimalNumber alloc] initWithFloat:totalAmount];

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top