我正在将我用Java编写的算法转换成Objective-C。 在Java中,BigDecimal类处理基于十进制的数字,并且可以将原始double作为构造函数参数。 但是,在Cocoa的NSDecimalNumber类中,没有直接的方法可以使用原始double构造实例。
目前,我正在使用这个(臭气熏天的)hack:
[NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%1.38f", number]];
有更好的方法吗?
[[NSDecimalNumber numberWithDouble:12.7] class]
并返回了 NSDecimalNumber。你在其他评论中提到的错误是 Cocoa 中的静态类型错误,据我所知,动态类型是好的并且正常工作。numberWithDouble:
只存在于 NSNumber 上这个事实是不相关的,因为它只调用[[[self alloc] initWithDouble:double] autorelease]
,而self
是接收消息的任何类。这是基本继承 — 类可以继承其父类的便利构造函数。 - Chuckid
。 - Chuck