@@ -1244,6 +1244,23 @@ extension TestJSONSerialization {
1244
1244
XCTAssertEqual ( try trySerialize ( [ - Double. greatestFiniteMagnitude] ) , " [-1.7976931348623157e+308] " )
1245
1245
XCTAssertEqual ( try trySerialize ( [ Double . greatestFiniteMagnitude] ) , " [1.7976931348623157e+308] " )
1246
1246
XCTAssertEqual ( try trySerialize ( [ Double ( - 1.0 ) , Double ( 1.0 ) ] ) , " [-1,1] " )
1247
+
1248
+ // Test round-tripping Double values
1249
+ let value1 = 7.7087009966199993
1250
+ let value2 = 7.7087009966200002
1251
+ let dict1 = [ " value " : value1]
1252
+ let dict2 = [ " value " : value2]
1253
+ let jsonData1 = try ! JSONSerialization . data ( withJSONObject: dict1)
1254
+ let jsonData2 = try ! JSONSerialization . data ( withJSONObject: dict2)
1255
+ let jsonString1 = String ( decoding: jsonData1, as: UTF8 . self)
1256
+ let jsonString2 = String ( decoding: jsonData2, as: UTF8 . self)
1257
+
1258
+ XCTAssertEqual ( jsonString1, " { \" value \" :7.708700996619999} " )
1259
+ XCTAssertEqual ( jsonString2, " { \" value \" :7.70870099662} " )
1260
+ let decodedDict1 = try ! JSONSerialization . jsonObject ( with: jsonData1) as! [ String : Double ]
1261
+ let decodedDict2 = try ! JSONSerialization . jsonObject ( with: jsonData2) as! [ String : Double ]
1262
+ XCTAssertEqual ( decodedDict1 [ " value " ] , value1)
1263
+ XCTAssertEqual ( decodedDict2 [ " value " ] , value2)
1247
1264
}
1248
1265
1249
1266
func test_serialize_Decimal( ) {
0 commit comments