爲什麼result
NSOrderedDescending
?NSDecimalNumber比較失敗
NSDecimalNumber *decimal = [[NSDecimalNumber alloc] initWithString:@"2.6"];
NSComparisonResult result = [decimal compare:[NSNumber numberWithFloat:2.6]];
爲什麼result
NSOrderedDescending
?NSDecimalNumber比較失敗
NSDecimalNumber *decimal = [[NSDecimalNumber alloc] initWithString:@"2.6"];
NSComparisonResult result = [decimal compare:[NSNumber numberWithFloat:2.6]];
2.6
不能精確表示爲浮點數,但NSDecimal
可以完全代表這個值(這就是爲什麼我們首先需要NSDecimals)。
根據IEEE 754 Calculator,2.6
被轉換到2.5999999046325684
,其小於2.6
,因此作爲比較NSOrderedDescending
。
我敢打賭這是一個內部舍入問題。你有沒有試過@「2.60」和2.6? – 2012-07-31 21:12:36
感謝馬克。以爲我在使用NSDecimalNumber時很聰明,但是這個四捨五入的錯誤事物運行得更深。結束使用NSDecimal。 – Gonzalo 2012-07-31 22:00:24