Objective c 为什么NSNumber在转换为无符号整数时对负数进行舍入?
例如:Objective c 为什么NSNumber在转换为无符号整数时对负数进行舍入?,objective-c,casting,unsigned,nsnumber,Objective C,Casting,Unsigned,Nsnumber,例如: [@(-2.50001) unsignedIntegerValue] == -3 [@(-2.49999) unsignedIntegerValue] == -2 但是: 这是密码。我正在编写代码的单元测试: - (void)testUnsignedIntegerValue { XCTAssertEqual([@(-2.50001) unsignedIntegerValue], (NSUInteger)-3); XCTAssertEqual([@(-2.49999) u
[@(-2.50001) unsignedIntegerValue] == -3
[@(-2.49999) unsignedIntegerValue] == -2
但是:
这是密码。我正在编写代码的单元测试:
- (void)testUnsignedIntegerValue {
XCTAssertEqual([@(-2.50001) unsignedIntegerValue], (NSUInteger)-3);
XCTAssertEqual([@(-2.49999) unsignedIntegerValue], (NSUInteger)-2);
}
从:
由于数字类型具有不同的存储功能,因此正在尝试
使用一种类型的值初始化并访问另一种类型的值
类型可能产生错误的结果
此外,更进一步,具体显示查询从负浮点值创建的NSNumber
的unsignedIntegerValue
会产生“无效、错误的结果”
您试图做的事情本质上是未定义的,无法使其可靠。来自:
由于数字类型具有不同的存储功能,因此正在尝试
使用一种类型的值初始化并访问另一种类型的值
类型可能产生错误的结果
此外,更进一步,具体显示查询从负浮点值创建的NSNumber
的unsignedIntegerValue
会产生“无效、错误的结果”
你试图做的事情本质上是不确定的,也不能被认为是可靠的
- (void)testUnsignedIntegerValue {
XCTAssertEqual([@(-2.50001) unsignedIntegerValue], (NSUInteger)-3);
XCTAssertEqual([@(-2.49999) unsignedIntegerValue], (NSUInteger)-2);
}