我有一個簡單的例子使用foat VS NSDecimalNumber之間進行比較:浮子VS NSDecimalNumber計算
NSDecimalNumber *n1 = [[NSDecimalNumber alloc] initWithDouble:33.23];
NSDecimalNumber *n2 = [[NSDecimalNumber alloc] initWithDouble:78.35];
NSDecimalNumber *n3 = [n1 decimalNumberByDividingBy:n2];
NSLog(@"decimalNumber n3 %@", n3);
double d1 = 33.230000000000000;
double d2 = 78.350000000000000;
double d3 = d1/d2;
NSLog(@"double d3 %f", d3);
結果:
decimalNumber n3 0.42412252712188889444798978940650925335
double d3 0.424123
問題:
- 爲什麼我have't的相同的結果?我認爲浮動分區圍繞結果,我們可以用浮點數進行分區而不會舍入結果嗎?
感謝您的回答,將會回覆所有這些:) – samir
問題不是舍入,而是%f的默認精度。如果你使用''NSLog(@「double d3%.16f」,d3);'結果將是:「double d3 0.4241225271218890」。注意:double用64位表示,精度約爲16位十進制數字。 一個'NSDecimalNumber':可以表示一個十進制整數,最多爲38位十進制數字。 – zaph