Python舍入浮点数编号问题

时间:2015-05-26 07:10:57

标签: python python-2.7

我有以下代码,我使用python 2.7.9运行:

import math

print 0.6/0.05
print math.floor(0.6/0.05)
print int(0.6/0.05)

输出结果为:

12.0
11.0
11

当我使用floor或int时,为什么它将我的12.0变为11.0? round()可以工作,但不适合我的用例。 我有0.55,0.60,0.65,0.70运行...除了0.6之外一切正常。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您事先知道所需的分辨率,则可以相应地乘以输入数字,然后安全地进行所需的计算。

我们说分辨率为0.01。然后:

// forward declaration
class App;

// Interface to all visualization methods
struct Methods {
    virtual void show(App * a) = 0;
};

// Some visualization method
struct Method0 : public Methods {
    void show(App * a) {
        a->getData();
    }
};

class App {
public:
    vector<Methods *> methods;

    void run() {
        // draw all registered methods
        for (auto m : methods)
            m->show(this);
    }

    int getData() {
        // parse and precompute data (time-consuming, thus do it only once)
        // return the required data (not just an int..)
        return 42;
    }
};

void main() {
    App a;

    // register some methods
    a.methods.push_back(new Method0());

    // run the application
    a.run();

    // clean up
    for (auto m : a.methods) delete(m);
}