Objective c 目标C:十进制乘10次方会降低完美除法的精度

Objective c 目标C:十进制乘10次方会降低完美除法的精度,objective-c,ios7,Objective C,Ios7,我有一个场景,需要始终使用两个精度值来显示数量。服务器以美分为单位向我发送值,我使用下面编写的代码将其更改为美元 #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSDecimalNumber *shiftedDecimalNumber = [

我有一个场景,需要始终使用两个精度值来显示数量。服务器以美分为单位向我发送值,我使用下面编写的代码将其更改为美元

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

   NSDecimalNumber *shiftedDecimalNumber = [[[NSDecimalNumber alloc] initWithString:@"100.00"]  decimalNumberByMultiplyingByPowerOf10:-2];

    NSLog (@"%@",shiftedDecimalNumber);
   [pool drain];
   return 0;
}
#导入
int main(int argc,const char*argv[]
{
NSAutoreleasePool*池=[[NSAutoreleasePool alloc]init];
NSDecimalNumber*移位的DecimalNumber=[[NSDecimalNumber alloc]initwith字符串:@“100.00”]DecimalNumber以10:-2的幂倍数递增;
NSLog(@“%@”,移位小数);
[泳池排水沟];
返回0;
}
当我有像101这样的值时,这段代码可以很好地工作,因为现在当我使用十进制数bymultiplyingbypowerof10加上幂-2时,我将得到1.01(101/100)

但如果我的值是100或200,那么小数点乘10的幂和幂-2分别得到1或2

如何确保始终具有两个精度的十进制值

提前谢谢

精度没有“丢失”。记录NSDecimalNumber时,
NSLog()
不打印尾随零(确切地说,尾随零不是由
NSDecimalNumber
-description
打印的,即在引擎盖下调用)

尝试获取数字的
double
表示形式,然后使用需要始终包含两位小数的格式说明符记录:

NSLog(@“%.2f”,[shiftedDecimalNumber doubleValue]);


注意:转换为double是必要的,因为使用的格式说明符需要double作为参数。当然,可能还有其他方法来打印号码。

好的,这意味着我没有做错任何事情,我需要自己提供格式。谢谢我知道我没有做错任何事,我现在感觉好多了