diff options
| author | juxiliary <juxiliary@gmail.com> | 2014-11-06 20:25:13 +1000 |
|---|---|---|
| committer | juxiliary <juxiliary@gmail.com> | 2014-11-07 07:20:28 +1000 |
| commit | 18c328da27fedb563625718bdd5007e583455dec (patch) | |
| tree | 430d85148a8e5553801c9c83aa3ac6ff44f675c8 | |
| parent | 8ed288edb27fc83b15a549af69c82b5bb4f8ac1e (diff) | |
| download | rust-18c328da27fedb563625718bdd5007e583455dec.tar.gz rust-18c328da27fedb563625718bdd5007e583455dec.zip | |
Fixing #18659
Changes the radix multiplier to start at -0.0 instead of -1.0 when reading strings that start with '-'.
| -rw-r--r-- | src/libstd/num/strconv.rs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/libstd/num/strconv.rs b/src/libstd/num/strconv.rs index 612090a3a51..088ea89818e 100644 --- a/src/libstd/num/strconv.rs +++ b/src/libstd/num/strconv.rs @@ -451,7 +451,7 @@ pub fn from_str_radix_float<T: Float>(src: &str, radix: uint) -> Option<T> { }; // The significand to accumulate - let mut sig = if is_positive { _0 } else { -_1 }; + let mut sig = if is_positive { _0 } else { -_0 }; // Necessary to detect overflow let mut prev_sig = sig; let mut cs = src.chars().enumerate(); @@ -647,6 +647,22 @@ mod test { let fe : Option<f32> = from_str_radix_float("1e40", 10); assert_eq!(fe, Some(Float::infinity())) } + + #[test] + fn test_from_str_radix_float() { + let x1 : Option<f64> = from_str_radix_float("-123.456", 10); + assert_eq!(x1, Some(-123.456)); + let x2 : Option<f32> = from_str_radix_float("123.456", 10); + assert_eq!(x2, Some(123.456)); + let x3 : Option<f32> = from_str_radix_float("-0.0", 10); + assert_eq!(x3, Some(-0.0)); + let x4 : Option<f32> = from_str_radix_float("0.0", 10); + assert_eq!(x4, Some(0.0)); + let x4 : Option<f32> = from_str_radix_float("1.0", 10); + assert_eq!(x4, Some(1.0)); + let x5 : Option<f32> = from_str_radix_float("-1.0", 10); + assert_eq!(x5, Some(-1.0)); + } } #[cfg(test)] |
