match self {
&Number::Fixnum(n) => n.get_num() < 0,
&Number::Integer(ref n) => &**n < &0,
- &Number::Float(OrderedFloat(f)) => f.is_sign_negative(),
+ &Number::Float(OrderedFloat(f)) => f.is_sign_negative() && OrderedFloat(f) != -0f64,
&Number::Rational(ref r) => &**r < &0,
}
}
match self {
&Number::Fixnum(n) => n.get_num() == 0,
&Number::Integer(ref n) => &**n == &0,
- &Number::Float(f) => f == OrderedFloat(0f64),
+ &Number::Float(f) => f == OrderedFloat(0f64) || f == OrderedFloat(-0f64),
&Number::Rational(ref r) => &**r == &0,
}
}
match n {
NumberFocus::Unfocused(n) => match n {
- Number::Float(fl) => {
- let OrderedFloat(fl) = fl;
+ Number::Float(OrderedFloat(mut fl)) => {
+ if OrderedFloat(fl) == -0f64 {
+ fl = 0f64;
+ }
+
let output_str = format!("{0:<20?}", fl);
push_space_if_amb!(self, &output_str, {
self.print_rational(r, add_brackets);
return;
}
- Number::Fixnum(n) => {
- append_str!(self, &format!("{}", n.get_num()));
- }
n => {
let output_str = format!("{}", n);