我有一个简单的例子来比较使用foat:
NSDecimalNumber *n1 = [[NSDecimalNumber alloc] initWithDouble:33.23];
NSDecimalNumber *n2 = [[NSDecimalNumber alloc] initWithDouble:78.35];
NSDecimalNumber *n3 = [n1 decimalNumberByDividingBy:n2];
NSLog(@"decimalNumber n3 %@", n3);
double d1 = 33.230000000000000;
double d2 = 78.350000000000000;
double d3 = d1/d2;
NSLog(@"double d3 %f", d3);结果:
decimalNumber n3 0.42412252712188889444798978940650925335
double d3 0.424123问题:
发布于 2015-06-20 13:31:20
这是由于这两种类型的精度、数字数和基数之间的差异。double和float内部使用基数2,精度较低,NSDecimalNumber使用基数10,精度也较高。它类似于分数和小数,例如,1/3和0.333333333333333333不完全相同。网络上有大量的答案,还有介绍性的CS教科书,这些都涉及到更详细的细节。HTH
发布于 2015-06-20 13:17:04
我认为这更像是一个NSLog问题,而不是一个四舍五入的问题。
尝试记录[n3 doubleValue],而不是:
NSLog(@"decimalNumber n3 %f", [n3 doubleValue]);https://stackoverflow.com/questions/30954359
复制相似问题