From 62eac6d0a6e99b726829f6175055ea6d34d666cf Mon Sep 17 00:00:00 2001 From: RunasSudo Date: Sun, 6 Jun 2021 00:53:52 +1000 Subject: [PATCH] Always display ballot weights to at least 2 decimal places --- src/numbers/rational_num.rs | 2 +- src/stv/mod.rs | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/numbers/rational_num.rs b/src/numbers/rational_num.rs index d2908f5..c94a1d3 100644 --- a/src/numbers/rational_num.rs +++ b/src/numbers/rational_num.rs @@ -84,7 +84,7 @@ impl From for Rational { } impl From for Rational { - fn from(n: f64) -> Self { + fn from(_n: f64) -> Self { // FIXME: This is very broken! //return Self(RatioType::from_float(n).unwrap() * RatioType::from_integer(100000).round() / RatioType::from_integer(100000)); todo!(); diff --git a/src/stv/mod.rs b/src/stv/mod.rs index 91f4da0..987d11c 100644 --- a/src/stv/mod.rs +++ b/src/stv/mod.rs @@ -25,6 +25,7 @@ use crate::election::{Candidate, CandidateState, CountCard, CountState, Parcel, use wasm_bindgen::prelude::wasm_bindgen; +use std::cmp::max; use std::collections::HashMap; use std::ops; @@ -581,7 +582,7 @@ where transfer_value.as_mut().unwrap().floor_mut(dps); } - state.logger.log_literal(format!("Surplus of {} distributed at value {:.dps$}.", elected_candidate.name, transfer_value.as_ref().unwrap(), dps=opts.pp_decimals)); + state.logger.log_literal(format!("Surplus of {} distributed at value {:.dps2$}.", elected_candidate.name, transfer_value.as_ref().unwrap(), dps2=max(opts.pp_decimals, 2))); } None => { transfer_value = None; @@ -791,7 +792,7 @@ where if let ExclusionMethod::SingleStage = opts.exclusion { state.logger.log_literal(format!("Transferring {:.0} ballot papers, totalling {:.dps$} votes.", result.total_ballots, result.total_votes, dps=opts.pp_decimals)); } else { - state.logger.log_literal(format!("Transferring {:.0} ballot papers, totalling {:.dps$} votes, received at value {:.dps$}.", result.total_ballots, result.total_votes, value, dps=opts.pp_decimals)); + state.logger.log_literal(format!("Transferring {:.0} ballot papers, totalling {:.dps$} votes, received at value {:.dps2$}.", result.total_ballots, result.total_votes, value, dps=opts.pp_decimals, dps2=max(opts.pp_decimals, 2))); } // Transfer candidate votes