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作为参数。当然,可能还有其他方法来打印号码。好的,这意味着我没有做错任何事情,我需要自己提供格式。谢谢我知道我没有做错任何事,我现在感觉好多了