相关疑难解决方法(0)

Swift 3:十进制到Int

我尝试使用以下代码将Decimal转换为Int:

Int(pow(Decimal(size), 2) - 1) 
Run Code Online (Sandbox Code Playgroud)

但我得到:

.swift:254:43: Cannot invoke initializer for type 'Int' with an argument list of type '(Decimal)' 
Run Code Online (Sandbox Code Playgroud)

在这里我知道pow正在返回a Decimal但似乎Int没有构造函数和成员函数可以转换DecimalInt.
如何在Swift 3中将Decimal转换为Int?

nsdecimalnumber ios swift swift3

25
推荐指数
4
解决办法
2万
查看次数

{NSDecimalNumber integerValue}在iOS8中表现异常

好的团队,这很奇怪.[NSDecimalNumber integerValue]表现得很奇怪.

我坐在一个断点处,试图弄清楚为什么我的应用程序的某些部分在iOS8中被破坏了,而我正在查看一个名为"timeSeconds"的变量.在Xcode变量视图中看起来像这样:

_timeSeconds    (NSDecimalNumber *) 344.514533996581994496
Run Code Online (Sandbox Code Playgroud)

但是当我在调试器中查询它时,我看到了这个:

(lldb) p [self.timeSeconds doubleValue]
(double) $14 = 344.51453399658192
(lldb) p [self.timeSeconds intValue]
(int) $15 = 344
(lldb) p [self.timeSeconds integerValue]
(NSInteger) $16 = -5
(lldb) p (NSInteger)[self.timeSeconds intValue]
(NSInteger) $17 = 344
Run Code Online (Sandbox Code Playgroud)

看到"-5"?在我提交雷达之前,你们中的任何人都可以复制或解释这些吗?

这是SSCCE:

NSDecimalNumber *n = [NSDecimalNumber decimalNumberWithString:@"344.514533996581994496"];
NSLog(@"%@", n); // 344.514533996581994496
NSLog(@"%ld", (long)[n intValue]); // 344
NSLog(@"%ld", (long)[n integerValue]); // -5
NSLog(@"%ld", (long)[n unsignedIntegerValue]); // 12
Run Code Online (Sandbox Code Playgroud)

提前致谢!

马修

objective-c nsdecimalnumber ios8

10
推荐指数
1
解决办法
626
查看次数

标签 统计

nsdecimalnumber ×2

ios ×1

ios8 ×1

objective-c ×1

swift ×1

swift3 ×1