我正在处理我需要相互减去的货币值。我读到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
答案 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
(以前有错误,不确定是否仍有错误,值得调查)。