iPhone:四舍五入双值

iPhone:四舍五入双值,iphone,Iphone,我有一些双值,35.44,35.66。我需要把它们四舍五入,结果应该是NSNumber。结果应该是35.4,35.7。那怎么做呢?同样,结果应该是NSNumber,而不是NSString 乘以10,使用舍入函数去除小数点,然后除以10。乘以10,使用舍入函数去除小数点,然后除以10。您可以将其打印为字符串,并使用格式字符串将其剪切到一个小数点 NSString *stringRepresentation = [NSString stringWithFormat:@"%.1f", myDouble

我有一些双值,35.44,35.66。我需要把它们四舍五入,结果应该是NSNumber。结果应该是35.4,35.7。那怎么做呢?同样,结果应该是NSNumber,而不是NSString

乘以10,使用舍入函数去除小数点,然后除以10。

乘以10,使用舍入函数去除小数点,然后除以10。

您可以将其打印为字符串,并使用格式字符串将其剪切到一个小数点

NSString *stringRepresentation = [NSString stringWithFormat:@"%.1f", myDouble];
NSNumber *number = [NSNumber numberWithDouble:[stringRepresentation doubleValue]];

您可以将其打印为字符串,并使用格式字符串将其剪切到小数点后一位

NSString *stringRepresentation = [NSString stringWithFormat:@"%.1f", myDouble];
NSNumber *number = [NSNumber numberWithDouble:[stringRepresentation doubleValue]];

编辑: 我误解了原来的问题,以为你想把一个double作为整数值存储在一个nsnumber中

要回答正确的问题,另一个选项是过渡int:

double myDouble = 1.23;
int myInt = myDouble * 10;
myDouble = (double)myInt ;
myDouble /= 10; 
NSNumber *myNumber = [NSNumber numberWithDouble:myDouble];
不过,您最好将double存储在NSNumber中,并在以后检索时将其舍入

编辑2:

更精简的版本将是:

double myDouble = 1.23;
myDouble = (int)(myDouble * 10);
NSNumber *myNumber = [NSNumber numberWithDouble:myDouble/10];
最好不要创建临时nsstring。。。伊姆霍

编辑: 我误解了原来的问题,以为你想把一个double作为整数值存储在一个nsnumber中

要回答正确的问题,另一个选项是过渡int:

double myDouble = 1.23;
int myInt = myDouble * 10;
myDouble = (double)myInt ;
myDouble /= 10; 
NSNumber *myNumber = [NSNumber numberWithDouble:myDouble];
不过,您最好将double存储在NSNumber中,并在以后检索时将其舍入

编辑2:

更精简的版本将是:

double myDouble = 1.23;
myDouble = (int)(myDouble * 10);
NSNumber *myNumber = [NSNumber numberWithDouble:myDouble/10];

最好不要创建临时nsstring。。。imho

如果
(double)myInt
大于
MAXINT
,会发生什么?不知怎的,我想你知道答案;)好电话。操作,确保目标设备上的int小于maxint。然而,OP给出的双值对于这种方法来说是很好的。如果
(double)myInt
大于
MAXINT
,会发生什么?不知怎的,我想你知道答案;)好电话。操作,确保目标设备上的int小于maxint。然而,OP给出的双值适用于这种方法。