double b = a / 100000;
b = (int) b;
b *= 100000;
如何将上面的C代码转换为Rust?特别是第2行代码,它会将数字四舍五入。
double b = a / 100000;
b = (int) b;
b *= 100000;
如何将上面的C代码转换为Rust?特别是第2行代码,它会将数字四舍五入。
但这是您的精确代码的Rust等效版本(假设a
具有类型f64
):
let b = a / 100_000.0; // underscore in number to increase readability
let b = b as i64;
let b = b * 100_000;
当然,这也可以写成一行:
let b = ((a / 100_000.0) as i64) * 100_000;
f64
的round
方法:let b = ((a / 100_000.0).round() as i64) * 100_000;
trunc
, ceil
和 floor
等方法。您可以使用其中之一来精确控制发生的情况,而不是依赖于强制类型转换。从 Rust 书籍中我们可以了解到:trunc
,但如果这种行为对您很重要,您应该使用trunc
来...
let a = 2e50;
let b : f64 = a / 100000.0;
let c = b.round() as i64;
println!("{}", c);
b
仍然是一个浮点数,而不是整数。 - SOFe