【发布时间】:2012-11-26 09:28:04
【问题描述】:
double n = 1.3243;
for (int i = 0; long(n*10) % 10 != 0; i++, n *= 10) {
}
我编写这段代码是为了了解一个数字是否有小数部分。
在循环结束时,“i”应该是 4,但由于某种原因,计数器不会增加。
除了你可能不喜欢我的解决方案,你有什么建议吗?
【问题讨论】:
-
由于浮点数不准确,最好检查
if ((int)n - n) < epsilon)... -
在您粘贴的代码中,无法知道循环末尾的
i是什么。请发布您的真实代码。 -
@H2CO3 他在做模数运算之前很久就开始了,这很好。这里没有进行浮点比较。
-
@Joost 我知道,我是说
1.3243可能无法完全表示,因此循环可能不会在 OP 认为应该结束的地方结束...... -
@Joost 当然,无论哪种情况你都是对的 :) 不用担心。
标签: c++ loops for-loop counter increment