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(src: &str, radix: uint) -> Option { }; // 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 = from_str_radix_float("1e40", 10); assert_eq!(fe, Some(Float::infinity())) } + + #[test] + fn test_from_str_radix_float() { + let x1 : Option = from_str_radix_float("-123.456", 10); + assert_eq!(x1, Some(-123.456)); + let x2 : Option = from_str_radix_float("123.456", 10); + assert_eq!(x2, Some(123.456)); + let x3 : Option = from_str_radix_float("-0.0", 10); + assert_eq!(x3, Some(-0.0)); + let x4 : Option = from_str_radix_float("0.0", 10); + assert_eq!(x4, Some(0.0)); + let x4 : Option = from_str_radix_float("1.0", 10); + assert_eq!(x4, Some(1.0)); + let x5 : Option = from_str_radix_float("-1.0", 10); + assert_eq!(x5, Some(-1.0)); + } } #[cfg(test)]