簡體   English   中英

NSNumberFormatter錯誤?

[英]NSNumberFormatter bug?

當我嘗試通過NSNumberFormatter將NSString @"8.8"轉換為NSNumber時

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setPositiveFormat:@"###0.##"];

NSNumber *result = [formatter numberFromString:@"8.8"];
NSLog(@"%@", [result stringValue]);
[formatter release];

結果是8.800000000000001

對於任何其他值(即: 6.67.79.91.24.7等等),記錄的結果是完全一樣的NSString傳遞給numberFromString方法。

我正在使用XCode 4.1和4.3模擬器。 如果我放置(或不放置) setMaximumFractionDigits或/和setPositiveFormat沒有區別,則結果始終為8.800000000000001 怎么了?

非整數的大多數數字無法在浮點變量中准確表示。 有一個NSDecimalNumber類,它會以開銷為代價處理精確值,該類主要用於貨幣計算。

請參閱: WIkipedia
浮點數是有理數,因為它們可以表示為一個整數除以另一個整數。 但是,基數確定了可以表示的分數。 例如,不能使用二進制基數將1/5精確地表示為浮點數,而可以使用十進制基數精確地表示1/5。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM