-
Notifications
You must be signed in to change notification settings - Fork 10
Description
I noticed recently that, due to the strict bounds checking in pick_appropriate_units()
in src/measurement.rs
, that the following code was not producing the output I was expecting:
extern crate measurements;
use measurements::*;
fn main() {
let val : f64 = 1.0;
println!("Mass of {0:.3}", Mass::from_kilograms(val));
println!("Length of {0:.3}", Length::from_meters(val));
println!("Volume of {0:.3}", Volume::from_litres(val));
}
prints the following:
Mass of 1000.000 g
Length of 100.000 cm
Volume of 1000.000 ml
whereas I had expected it to print:
Mass of 1.000 kg
Length of 1.000 m
Volume of 1.000 l
I figure the former is perhaps more precise, but seemed a bit ugly for display when dealing with units which didn't need that precision, particularly given that if I change val
to be 1.00000000001
, I get the output I was expecting (due to precision formatting).
I've gone and updated my branch to use the latter by changing value > 1.0 || value < -1.0
to value >= 1.0 || value <= -1.0
in pick_appropriate_units()
. If this is something that is generally more useful, or something to offer as an opt-in, I'd be happy to submit a PR.