diff options
| author | bors <bors@rust-lang.org> | 2014-08-12 07:31:17 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-08-12 07:31:17 +0000 |
| commit | c1eaafe8ab2114dd10d87a4983e1263c844f782f (patch) | |
| tree | c87e3beb08867c30adf74337e5996fbde99730c9 | |
| parent | e8204a84c7f365533c217b4882bbe0cbce5a34e3 (diff) | |
| parent | 04233a1675272d4a21440943f1441b586cdf0afd (diff) | |
| download | rust-c1eaafe8ab2114dd10d87a4983e1263c844f782f.tar.gz rust-c1eaafe8ab2114dd10d87a4983e1263c844f782f.zip | |
auto merge of #16425 : nham/rust/fix_nan_format, r=alexcrichton
Currently, this:
println!("{}", std::f64::NAN);
prints "-NaN". This commit is an attempt to change that to "NaN" instead.
| -rw-r--r-- | src/libcore/fmt/mod.rs | 7 | ||||
| -rw-r--r-- | src/test/run-pass/format-nan.rs | 18 |
2 files changed, 22 insertions, 3 deletions
diff --git a/src/libcore/fmt/mod.rs b/src/libcore/fmt/mod.rs index 48bbc8401fe..9cb64747c91 100644 --- a/src/libcore/fmt/mod.rs +++ b/src/libcore/fmt/mod.rs @@ -19,6 +19,7 @@ use collections::Collection; use iter::{Iterator, range}; use kinds::Copy; use mem; +use num::Float; use option::{Option, Some, None}; use ops::Deref; use result::{Ok, Err}; @@ -584,7 +585,7 @@ macro_rules! floating(($ty:ident) => { float::ExpNone, false, |bytes| { - fmt.pad_integral(*self >= 0.0, "", bytes) + fmt.pad_integral(self.is_nan() || *self >= 0.0, "", bytes) }) } } @@ -605,7 +606,7 @@ macro_rules! floating(($ty:ident) => { float::ExpDec, false, |bytes| { - fmt.pad_integral(*self >= 0.0, "", bytes) + fmt.pad_integral(self.is_nan() || *self >= 0.0, "", bytes) }) } } @@ -626,7 +627,7 @@ macro_rules! floating(($ty:ident) => { float::ExpDec, true, |bytes| { - fmt.pad_integral(*self >= 0.0, "", bytes) + fmt.pad_integral(self.is_nan() || *self >= 0.0, "", bytes) }) } } diff --git a/src/test/run-pass/format-nan.rs b/src/test/run-pass/format-nan.rs new file mode 100644 index 00000000000..1024bc21d2b --- /dev/null +++ b/src/test/run-pass/format-nan.rs @@ -0,0 +1,18 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +pub fn main() { + use std::f64; + let x = "NaN".to_string(); + assert_eq!(format!("{}", f64::NAN), x); + assert_eq!(format!("{:e}", f64::NAN), x); + assert_eq!(format!("{:E}", f64::NAN), x); +} + |
