C++ 对于循环,按十进制递增

C++ 对于循环,按十进制递增,c++,C++,for循环中的一个增量如何能够: for(int j=0;j

for循环中的一个增量如何能够:

for(int j=0;j<1.0;j+=0.01){}

很快我就知道,十进制使用了
int
odd

编辑:


在任何人变得厚颜无耻之前,我已经知道
int
是不正确的…问题是如何执行该方法,因为
int
不是这样做的有效方式

使用浮点类型而不是整数类型

for (float j = 0; j < 1.0; j+=0.01) {}
for(float j=0;j<1.0;j+=0.01){

for(双j=0;j<1.0;j+=0.01){

由于
j
的类型是
int
,因此对其执行的任何运算结果都将被截断为整数值。因此,这些增量将没有效果。如果您将
j
的类型更改为
double
的话,事情会更像您所期望的那样。但是请记住,0.01不能精确地表示为IEEE浮点值(这是您的硬件几乎可以肯定使用的)。

可以使用
double
并接受累积的错误,或者使用定点形式的
int
,这样您就可以在每个循环上计算更精确的值

使用
双精度

for (double j = 0; j < 1.0; j+=0.01) {}
for(双j=0;j<1.0;j+=0.01){
使用固定点以获得最大精度:

for (int i = 0; i < 100; ++i) {
    double j = i / 100.0;
}
for(int i=0;i<100;++i){
双j=i/100.0;
}

我建议不要这样做,而是使用整数。并且会给你带来不想要的结果。以您的范围为例,我们可以使用

for (int i = 0; i < 100; ++j)
{
    double step = static_cast<double>(i) / 100;
}
for(int i=0;i<100;++j)
{
双台阶=静态(i)/100;
}

这保证了我们得到100次迭代,但仍然允许您为每次迭代获得一个十进制“步长”。

当您需要按非整数量递增时,为什么要使用
int
?您不能使用
int
,除非该值指示百分之一。这并不奇怪;这是不可能的。看来你需要学习C++的基本原理。请告诉我你知道整数和有理数之间的区别。这是基本集合理论,所以我可以在循环中使用
step
变量,然后说我会使用
x=x1+j(x2-x1)
我只是用
step
替换
j
@意大利面酱是的。很好的解释!谢谢@意大利面酱没问题。很乐意帮忙。
for (int i = 0; i < 100; ++j)
{
    double step = static_cast<double>(i) / 100;
}