舍入有效数字

时间:2011-07-19 17:02:01

标签: objective-c math floating-point rounding significant-digits

在iPhone的Xcode / Objective-C中。

我有一个值为0.00004876544的浮点数。如何在第一个有效数字后显示两位小数?

例如,0.00004876544将读为0.000049。

1 个答案:

答案 0 :(得分:4)

我没有通过编译器对其进行仔细检查,但是这里是算法的基本要点(从答案转换为this question):

-(float) round:(float)num toSignificantFigures:(int)n {
    if(num == 0) {
        return 0;
    }

    double d = ceil(log10(num < 0 ? -num: num));
    int power = n - (int) d;

    double magnitude = pow(10, power);
    long shifted = round(num*magnitude);
    return shifted/magnitude;
}

要记住的重要一点是Objective-C是C的超集,因此在C中有效的任何东西在Objective-C中也是有效的。此方法使用math.h中定义的C函数。