我需要实现一个for
循环,该循环从一个浮点数转到另一个浮点数。如何用边界值做一个'for'循环,并作为浮点值来执行?
我知道如何实现,在C类语言:
for (float i = -1.0; i < 1.0; i += 0.01) { /* ... */ }
我也知道,在鲁斯特我可以指定使用step_by
循环一步,这给了我我想要的,如果我有边界价值观和步为整数:
#![feature(iterator_step_by)]
fn main() {
for i in (0..30).step_by(3) {
println!("Index {}", i);
}
}
当我这样做,浮点数,它会导致编译错误:
#![feature(iterator_step_by)]
fn main() {
for i in (-1.0..1.0).step_by(0.01) {
println!("Index {}", i);
}
}
这里是编译输出:
error[E0599]: no method named `step_by` found for type `std::ops::Range<{float}>` in the current scope
--> src/main.rs:4:26
|
4 | for i in (-1.0..1.0).step_by(0.01) {
| ^^^^^^^
|
= note: the method `step_by` exists but the following trait bounds were not satisfied:
`std::ops::Range<{float}> : std::iter::Iterator`
`&mut std::ops::Range<{float}> : std::iter::Iterator`
我如何能实现这个循环中,锈?
这个循环甚至不是用C是一个好主意,因为浮点不精确意味着你不知道你肯定何时会停止(这可能需要200个或201步在你的例子中)。 – interjay
@interjay什么是替代呢?迭代整数并计算所需的浮点数会更好吗? – serge1peshcoff
我就是这么做的。 – interjay