我有以下代码,我使用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之外一切正常。 有什么想法吗?
答案 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);
}