File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -217,7 +217,10 @@ fn (mut encoder Encoder) encode_boolean(val bool) {
217217fn (mut encoder Encoder) encode_number [T](val T) {
218218 integer_val := val.str ()
219219 $if T is $float {
220- if integer_val[integer_val.len - 1 ] == `0` { // ends in .0
220+ if integer_val.len > 2 && integer_val[integer_val.len - 2 ] == `.`
221+ && integer_val[integer_val.len - 1 ] == `0` { // ends in .0
222+ // `2.0` = > `2`
223+ // but skip float in scientific notation, `1e+10`
221224 unsafe {
222225 integer_val.len - = 2
223226 }
Original file line number Diff line number Diff line change @@ -177,3 +177,15 @@ fn test_encode_time() {
177177
178178 assert json.encode (time.Time{}) == '"0000-00-00T00:00:00.000Z"'
179179}
180+
181+ fn test_encode_float () {
182+ // remove ending `.0`
183+ assert json.encode (1.0 ) == '1'
184+
185+ // TODO: better generate `1e10` instead of `1e+10`
186+ assert json.encode (1.0e+10 ) == '1e+10'
187+ assert json.encode (1.0e10 ) == '1e+10'
188+ assert json.encode (1 .e10 ) == '1e+10'
189+ assert json.encode (1.0e-10 ) == '1e-10'
190+ assert json.encode (1.1e10 ) == '1.1e+10'
191+ }
You can’t perform that action at this time.
0 commit comments