简体   繁体   English

字符串到NSDecimalNumber不起作用

[英]String to NSDecimalNumber Not Working

Can someone confirm for me this is the correct way to convert a NSString to an NSDecimalNumber ? 有人可以为我确认这是将NSString转换为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. 我有一个标签,当您单击该按钮时,价格就会显示出来,这称为totalPriceCalculated ,然后还有所有用于进行计算的字符串。 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";

尝试:

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

另一个选择是从float创建十进制数:

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

According to the Apple docs , the prefered way is to use +decimalNumberWithString: ; 根据Apple文档 ,首选方式是使用+ decimalNumberWithString: ;。 hope that helps. 希望能有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM