我正在尝试检查double变量p是否近似等于整数。在我的代码中的某个时候

double ip;
cout << setprecision(15) << abs(p) << " " << modf(abs(p), &ip) << endl;

对于给定的运行,我得到打印输出
1 1

这似乎是说1的小数部分是1,我是否在这里错过了一些内容,或者可能存在一些舍入问题等?

注意:我不包括整个代码,因为p的来源很复杂,我只是问这是否是一个熟悉的问题

最佳答案



当然可以。如果该值非常小于1,则显示时其值及其小数部分都可以四舍五入为1。



那么很有可能不是确切的整数。

关于c++ - fmod告诉我1的小数部分是1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26142037/

10-13 05:58