C++ 对于循环,按十进制递增
for循环中的一个增量如何能够:C++ 对于循环,按十进制递增,c++,C++,for循环中的一个增量如何能够: for(int j=0;j
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;
}