【发布时间】:2011-07-22 00:35:43
【问题描述】:
我正在尝试在 C++ 中实现一个简单的抽取算法。我有两个数组,比如p 和q,其中的下标通过以下关系相互关联:
p[k] = q[0.5*k]。这意味着以下序列应该保持有效:
p[0] = q[0]
p[1] = 0
p[2] = q[1]
p[3] = 0
p[4] = q[2]
等等……
请注意,p[k] 仅在 (0.5*k) 的结果不包含小数位(或十进制为 0)且不使用任何四舍五入等情况下才取值。
我的问题是: 有没有办法区分整数(没有小数位的数字或小数点中只有 0,比如 2.0)和 C++ 中的小数位数字,前提是两者被投到双倍?
eg.) 2.0 是一个整数转换为 double。 2.1 是带小数位的数字。
例如。 2) * 0.9*2 应将 0 放入数组 p 中,而 0.9*10 应将 q[9] 放入数组 p 中。*
如果我使用语句 (int) (0.5*k),那么无论 k 的值如何,我都会在每种情况下得到一个整数。
编辑: 上述案例中的 0.5 只是说明性的。它可以是任何数字,例如 2、2.5、0.9、0.95 等)
欢迎任何帮助,
谢谢,
斯里拉姆。
【问题讨论】:
-
为什么不使用整数除法?
-
还有,在数学上你如何区分整数和整数?
-
@Johnsyweb,可能是因为
4/2和5/2都将返回2,而5/2应该以这样的方式失败,而Sriram 知道将0填充到@987654333 @. -
你的数组是由 int 组成的吗?如果结果与 0 不同,您不能只使用模数 (%2) 并且不执行任何操作吗?
-
整数和整数有什么区别?????
标签: c++ integer double rounding