about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libserialize/json.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs
index 23e2c4b9830..163fbcdff70 100644
--- a/src/libserialize/json.rs
+++ b/src/libserialize/json.rs
@@ -386,7 +386,8 @@ fn spaces(wr: &mut io::Writer, mut n: uint) -> Result<(), io::IoError> {
 fn fmt_number_or_null(v: f64) -> string::String {
     match v.classify() {
         FPNaN | FPInfinite => string::String::from_str("null"),
-        _ => f64::to_str_digits(v, 6u)
+        _ if v.fract() != 0f64 => f64::to_str_digits(v, 6u),
+        _ => f64::to_str_digits(v, 6u) + ".0",
     }
 }
 
@@ -2504,8 +2505,8 @@ mod tests {
 
     #[test]
     fn test_write_f64() {
-        assert_eq!(F64(3.0).to_string().into_string(), "3");
-        assert_eq!(F64(3.0).to_pretty_str().into_string(), "3");
+        assert_eq!(F64(3.0).to_string().into_string(), "3.0");
+        assert_eq!(F64(3.0).to_pretty_str().into_string(), "3.0");
 
         assert_eq!(F64(3.1).to_string().into_string(), "3.1");
         assert_eq!(F64(3.1).to_pretty_str().into_string(), "3.1");