MJExtension
MJExtension copied to clipboard
double 类型字符串在超过 NSDecimalNumber 最大值后转 Double 会造成溢出
描述bug double 类型字符串转 Double 会造成溢出
怎么样重现这个bug Model
@interface MJDog : NSObject
@property (copy, nonatomic) NSString *nickName;
@property (assign, nonatomic) double salePrice;
@property (assign, nonatomic) float runSpeed;
@end
Test case:
func testInfiniteDouble() throws {
let dict: [String: Any] = [
"nick_name": "旺财",
"sale_price": "\(Double.greatestFiniteMagnitude)",
"run_speed": "\(Float.greatestFiniteMagnitude)",
]
guard let dog = MJDog.mj_object(withKeyValues: dict) else { fatalError("dog conversion failed") }
XCTAssertEqual(dog.nickName, (dict["nick_name"] as! String))
// 这个会通不过
XCTAssertEqual(dog.salePrice, Double(dict["sale_price"] as! String))
XCTAssertEqual(dog.runSpeed, Float(dict["run_speed"] as! String))
}