减去货币 - NSNumber

时间:2015-05-15 12:02:02

标签: ios currency nsnumber

我正在处理我需要相互减去的货币值。我读到NSNumber有利于处理货币,但是我无法减去两个NSNumber。有没有更好的方法来处理电流或我错过了一些小的东西?

 NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
        [numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
        NSNumber* number = [numberFormatter  numberFromString:bDict[@"booking_deposit"]];
        if (!number) {
            [numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
            number = [numberFormatter  numberFromString:bDict[@"booking_deposit"]];
        }
        NSNumber* number2 = [numberFormatter  numberFromString:bDict[@"booking_total"]];
        if (!number2) {
            [numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
            number2 = [numberFormatter  numberFromString:bDict[@"booking_total"]];
        }
        NSLog(@"result %@",number2 - number);//warning here

继续发出警告:

Arithmetic on pointer to interface 'NSNumber', which is not a constant size for this architecture and platform

2 个答案:

答案 0 :(得分:2)

您需要获取存储在NSNumber中的值的类型以执行预先形成算术。

NSLog(@"result = %f", [number2 doubleValue] - [number doubleValue])

答案 1 :(得分:1)

你不能减去对象,这就是你得到错误的原因。

您可以使用$("#item").change(function () { $(".txtbox").val($(this).val()); }); <select name="item" id="item"> <option value="1">Orange</option> <option value="2">Apple</option> <option value="3">Grapes</option> </select> <input type="text" name="name" class="txtbox" /> <input type="text" name="name" class="txtbox" /> <input type="text" name="name" class="txtbox" /> 代替NSDecimalNumber,然后使用NSNumber的API。

或者,使用decimalNumberBySubtracting:

重点是使用一种数据类型,它允许您感兴趣的精确度,并且通常与您要进行的计算次数和类型有关。

double确实提供了NSNumberFormatter(以前有错误,不确定是否仍有错误,值得调查)。