refactor: significant digits calculation out of fn main
This commit is contained in:
parent
7c4074113f
commit
50358db183
1 changed files with 15 additions and 10 deletions
25
src/main.rs
25
src/main.rs
|
|
@ -12,6 +12,20 @@ pub fn parse_and_calc(s: &str) -> Float {
|
||||||
nodes::Nodes::from_str(s).unwrap().evaluate()
|
nodes::Nodes::from_str(s).unwrap().evaluate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_significant_digits(n: &Float) -> usize {
|
||||||
|
let raw_string = format!("{n}");
|
||||||
|
|
||||||
|
let mut significant_digits = raw_string.len() - 1;
|
||||||
|
for (i, _) in raw_string.char_indices() {
|
||||||
|
if !raw_string[i..raw_string.len()].contains(|c| matches!(c, '1'..'9')) {
|
||||||
|
significant_digits = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
significant_digits
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let input = match env::args().skip(1).reduce(|x, a| a + &x) {
|
let input = match env::args().skip(1).reduce(|x, a| a + &x) {
|
||||||
Some(s) => s,
|
Some(s) => s,
|
||||||
|
|
@ -24,14 +38,5 @@ fn main() {
|
||||||
|
|
||||||
let result = parse_and_calc(&input);
|
let result = parse_and_calc(&input);
|
||||||
|
|
||||||
let result_raw_string = format!("{}", result);
|
println!("{result:.0$}", get_significant_digits(&result));
|
||||||
let mut significant_digits = result_raw_string.len() - 1;
|
|
||||||
for (i, _) in result_raw_string.char_indices() {
|
|
||||||
if !result_raw_string[i..result_raw_string.len()].contains(|c| matches!(c, '1'..'9')) {
|
|
||||||
significant_digits = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
println!("{result:.significant_digits$}");
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue