首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浮子与NSDecimalNumber计算

浮子与NSDecimalNumber计算
EN

Stack Overflow用户
提问于 2015-06-20 13:06:23
回答 2查看 352关注 0票数 1

我有一个简单的例子来比较使用foat:

代码语言:javascript
复制
    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);

结果:

代码语言:javascript
复制
 decimalNumber n3 0.42412252712188889444798978940650925335
 double d3 0.424123

问题:

  1. 为什么我没有同样的结果?我认为浮动除法围绕着结果,我们能在不舍得结果的情况下用浮子进行除法吗?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-20 13:31:20

这是由于这两种类型的精度、数字数和基数之间的差异。doublefloat内部使用基数2,精度较低,NSDecimalNumber使用基数10,精度也较高。它类似于分数和小数,例如,1/3和0.333333333333333333不完全相同。网络上有大量的答案,还有介绍性的CS教科书,这些都涉及到更详细的细节。HTH

票数 2
EN

Stack Overflow用户

发布于 2015-06-20 13:17:04

我认为这更像是一个NSLog问题,而不是一个四舍五入的问题。

尝试记录[n3 doubleValue],而不是:

代码语言:javascript
复制
NSLog(@"decimalNumber n3 %f", [n3 doubleValue]);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30954359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档