【发布时间】:2014-11-26 07:59:57
【问题描述】:
我正在尝试检查 double 变量 p 是否大约等于一个整数。在我的代码中的某个时刻,我有
double ip;
cout << setprecision(15) << abs(p) << " " << modf(abs(p), &ip) << endl;
对于给定的运行,我得到了打印输出
1 1
这似乎是说 1 的小数部分是 1,我在这里遗漏了什么还是可能有一些舍入问题等?
注意:我没有包括整个代码,因为p 的来源很复杂,我只是想问一下这是否是一个熟悉的问题
【问题讨论】:
-
我建议您设置更高的精度并重新测试,这可能会捕获 not-quite-1。另外,我猜你省略了
p的初始化,而不是我们的 sn-p 的 1。 -
@Deduplicator 哦,是的,我现在明白了,例如p=0.999999999 这会发生.. 我会删除这篇文章,但这会删除你对 cmets 的支持吗?
-
不要仅仅因为它在 cmets 中得到回答就删除它。相反,鼓励评论者写一个实际的答案,或者如果他们不写,自己写答案。
-
好的!其实我想删除它,因为我认为这是一个愚蠢的问题:)
-
此外,cmets 是短暂的,对它们的支持仅在上下文中很重要。
标签: c++ integer std rounding fmodf