MJExtension icon indicating copy to clipboard operation
MJExtension copied to clipboard

double 类型字符串在超过 NSDecimalNumber 最大值后转 Double 会造成溢出

Open wolfcon opened this issue 4 years ago • 0 comments

描述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))
}

wolfcon avatar Dec 29 '21 02:12 wolfcon