objective-c - NSDecimalNumber 乘法奇怪

标签 objective-c cocoa-touch nsdecimalnumber

ExclusivePrice,数量都是NSDecimalNumbers。

NSDecimalNumber *price = [exclusivePrice decimalNumberByMultiplyingBy:quantity];
NSLog(@"%@ * %@ = %@", exclusivePrice, quantity, price);

我得到的结果:

2010-04-05 00:22:29.111 TestApp[13269:207] 65 * 2 = -0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007169919476068871316457914368

我的预期:

2010-04-05 00:22:29.111 TestApp[13269:207] 65 * 2 = 130

有人能解释一下吗?

编辑:

完整重现:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSDecimalNumber *n2 = (NSDecimalNumber *)[formatter numberFromString:@"2"];
NSDecimalNumber *n1 = (NSDecimalNumber *)[NSDecimalNumber numberWithInt:65];
NSDecimalNumber *n3 = [n1 decimalNumberByMultiplyingBy:n2];
NSLog(@"%@ * %@ = %@", n1, n2, n3);

最佳答案

似乎对我有用。

NSDecimalNumber * n1 = [NSDecimalNumber decimalNumberWithString:@"65"];
NSDecimalNumber * n2 = [NSDecimalNumber decimalNumberWithString:@"2"];

NSDecimalNumber * res = [n1 decimalNumberByMultiplyingBy:n2];

NSLog(@"%@ * %@ = %@", n1, n2, res);

输出:

2010-04-05 08:40:42.812 x[24301] 65 * 2 = 130

关于objective-c - NSDecimalNumber 乘法奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2576109/

相关文章:

objective-c - 为什么 Apple 在其类中使用 "flags"结构体?

ios - 检查 IOS 中两个位置的接近度

ios - iPhone SE 和 4s 的 Xcode 安全区域故障

iPhone:获取相机预览

iphone - UITableView 单元格之间的空间

objective-c - 比较 NSDecimalNumber 的不同方法

objective-c - 从 float 中获取小数部分

ios - NSDecimalNumber 不是应该能够进行以 10 为底的算术吗?

ios - NSRoundBankers 没有按照 Apple 的记录工作

ios - 长按“开关控制”按钮返回主菜单