在我正在建設的應用程序中,我使用了一些非常小的數字(4.12027703723203E-18
,7.685842358296843E-21
, 6.882072376426952E-24
, 2.7150860398820128E-27
等)。節省雙倍不失精度
的問題是,當我將它們存儲到陣列中,他們變成0的代碼位:
-(BOOL)checkNewInfo:(NSIndexPath*)indexPath andValue:(double)value {
//code omitted
[self.theValues replaceObjectAtIndex:indexPath.row withObject:[NSString stringWithFormat:@"%f", value]];
//code omitted
}
我做了一些調試和這裏的結果:
(gdb) p (double) value
$1 = 4.12027703723203e-18
(gdb) po [self theValues]
<__NSArrayM 0x6a45dc0>(
1.6086921836575816E-11,
3.7511646463463610E-13,
0.000000,
4.6856843535196843E-21,
9.820723621786952E-24
)
的初始數字來自文本文件,並且可以輕鬆訪問和使用它們。
因此,我更換了索引號2(舊的5.12027703723203E-18
,新的4.12027703723203E-18
)。所以理論上這個數字不應該改變,但實際上它變成了0.000000
。
爲了保持數字我該怎麼做?
謝謝,任何幫助將不勝感激