sum*_*odi 3 cocoa-touch types objective-c nsnumber ios
我有一个号码存储在一个NSNumber我想放入的号码中long double,如下所示:
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setMinimumSignificantDigits:5];
NSNumber * myNumber = [f numberFromString:@"1.1234567899"];
long double lnumber = mynumber;
NSLog(@"%Lf ",lnumber);
Run Code Online (Sandbox Code Playgroud)
Jos*_*ell 10
An NSNumber是Objective-C对象,long double是原始类型.您不能将对象分配给基元类型的变量.如果您想要存储在其中的数值,则NSNumber需要使用其中一种方法来检索它:
long double lnumber = [myNumber doubleValue];
Run Code Online (Sandbox Code Playgroud)
没有规定存放long double一个NSNumber; 最大的浮点类型很简单double.似乎long double可能与doubleiOS上的大小相同:请参阅此Apple支持论坛主题.
正如ThomasW所提到的,NSDecimalNumber定点数字类提供更高的精度(最多38位)和准确度NSNumber.long double但是,仍然没有办法摆脱它; 你必须用NSDecimalNumbers 来做所有数学运算才能保持精度.
你最初提到的问题标题NSInteger,虽然身体没有,所以让我添加这个说明.An NSInteger是一种原始类型,long double因此您实际上可以从一个分配给另一个.
NSInteger myInteger = 10000;
long double lnumer = myInteger;
Run Code Online (Sandbox Code Playgroud)
但是,因为它是一个整数,所以它不能有一个小数部分.
| 归档时间: |
|
| 查看次数: |
12666 次 |
| 最近记录: |