当前位置:  开发笔记 > IOS > 正文

在C double和Cocoa的NSDecimalNumber之间转换?

如何解决《在Cdouble和Cocoa的NSDecimalNumber之间转换?》经验,为你挑选了2个好方法。

我正在将我用Java编写的算法转换为Objective-C.在java中,BigDecimal类处理基数为10的数字,并且可以将原始double作为构造函数arg.但是,在Cocoa的NSDecimalNumber类中,没有使用基本double构造实例的直接方法.

目前我正在使用这个(臭臭)黑客:

    [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%1.38f", number]];

有没有更好的办法?



1> Chuck..:

NSNumber是NSDecimalNumber的超类,它有一个+ numberWithDouble:方法.那正是你想要的.


@Danny Tuppeny:我刚试过这个,你似乎错了.我做了`[[NSDecimalNumber numberWithDouble:12.7] class]`并找回了NSDecimalNumber.您在其他评论中引用的错误是Cocoa AFAICT中的静态输入错误.动态类型很好并且正常工作.`numberWithDouble:`只存在于NSNumber上的事实是无关紧要的,因为它只调用`[[[self alloc] initWithDouble:double] autorelease]`,而`self`就是收到消息的类.这是基本的继承 - 类可以继承父级的便利构造函数.

2> Echilon..:

你也可以使用[[NSDecimalNumber alloc] initWithDouble:(double)],它不是那么明显.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有