The float 100.0 gets serialized as 100, not as "100.0". This throws away the fact that it's a float, and violates the downstream contracts which expect a float here. AFAICT, there is no way to make it print as a float.
To reproduce in fsi:
> FSharp.Data.JsonValue.Parse("100.0").ToString();;
val it : string = "100.0"
> FSharp.Data.JsonValue.Float(100.0).ToString();;
val it : string = "100"