< 返回版块

chenx 发表于 2020-08-16 08:38

抱歉,文化水平不够,让大家笑话了。

fn main() {
	println!("Hello, world!");
	
	let x = vec![0.0, 0.23, 0.46, 0.69, 0.92, 1.15, 1.38, 1.61];

	gps(x);
}

fn gps(x: Vec<f64>) -> i32 {

	// let mut section: Vec<f64> = Vec::new();

	for (pos, ele) in x.iter().enumerate() {

		if x.get(pos+1) == None {
			break;
		}

		let num:f64 = (x[pos] - x[pos+1]).abs();

		println!("{}", num);

	}
	
	return 0;
}

为啥计算结果出来好多小数啊,怎么消除一下...

评论区

写评论
作者 chenx 2020-08-17 22:32

抱歉,暴露文化水平了。

--
👇
spacemeowx2: 不耻下问??

作者 chenx 2020-08-17 22:32

抱歉,暴露文化水平了。

--
👇
liangyongrui: 不耻下问...?

作者 chenx 2020-08-17 19:03

感谢,学习了。

--
👇
derust: 你成功的把中文用的像文盲,Rust用的像C语言。

你的这个需求稍微有点函数式编程思维就会想到map reduce操作

Rust版本,iter

fn gps(x: Vec<f64>) -> Vec<f64> {
	let it = x.iter().scan(0.0, |st, &x| {
		let res = (*st - x).abs();
		*st = x;
		Some(res)
	});
	it.skip(1).collect()
}

多看点书别老瞎凑凑

作者 chenx 2020-08-17 19:02

感谢,学习了。

--
👇
93996817: f64 本就如此

`` 要么格式化 要么round

fn round(value:f64,digit:u32)->f64{

let mul=10_i32.pow(digit) as f64;
(value* mul).round()/mul

}

derust 2020-08-17 15:33

你成功的把中文用的像文盲,Rust用的像C语言。

你的这个需求稍微有点函数式编程思维就会想到map reduce操作

Rust版本,iter

fn gps(x: Vec<f64>) -> Vec<f64> {
	let it = x.iter().scan(0.0, |st, &x| {
		let res = (*st - x).abs();
		*st = x;
		Some(res)
	});
	it.skip(1).collect()
}

多看点书别老瞎凑凑

spacemeowx2 2020-08-17 13:53

不耻下问??

liangyongrui 2020-08-16 14:05

不耻下问...?

xiaopengli89 2020-08-16 13:43

要计算精确小数,请使用定点数 https://docs.rs/bigdecimal/0.1.2/bigdecimal/

Mike Tang 2020-08-16 12:06

服务完美。

93996817 2020-08-16 09:08

f64 本就如此

`` 要么格式化 要么round

fn round(value:f64,digit:u32)->f64{

let mul=10_i32.pow(digit) as f64;
(value* mul).round()/mul

}

1 共 10 条评论, 1 页