pandas
上述C代码如何转换为Rust?特别是对数字进行舍入的第2行。
答案 0 :(得分:27)
特别是对数字进行舍入的第2行。
首先:这不是真的。 “舍入”实数是为了返回最接近的整数。您只需将其转换为int
即可丢弃所有非整数部分。
但是这里的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
的{{3}}方法:
let b = ((a / 100_000.0).round() as i64) * 100_000;
请注意,还有round
,trunc
和ceil
。您可以使用其中一种方法来精确控制发生的事情,而不是依赖于强制转换。 floor
我们可以学习:
从浮点数转换为整数会使浮点数向零舍入。
此行为相当于trunc
,但如果行为对您很重要,则应使用trunc
来...
答案 1 :(得分:4)
要将浮点数转换为整数,可以使用as
。例如:
let b = (a / 100000.0) as i64;
答案 2 :(得分:2)
这是Rust中的圆形示例。 您必须按照它们的类型编写数字常量: 例如,如果d是f64并且你想将它乘以10,那么正确的约定就是写: d * 10.0 代替: d * 10
并明确定义变量的类型,以便在这种情况下使圆函数可用。
let a = 2e50;
let mut b : f64 = a / 100000.0;
b = b.round();
println!("{}", b);