2013-04-19 18 views
12

Ben şu kodu çalıştırınFloat ve double arasındaki fark nedir?

NSString* s= @"10000000.01"; 
float f = [s floatValue]; 
double d = [s doubleValue]; 

if(f > 10000000) 
{ 
    NSLog(@"Over Value"); 
} 
else { 
    NSLog(@"OK Float"); 
} 

if(d > 10000000) 
{ 
    NSLog(@"Over value"); 
} 
else { 
    NSLog(@"OK Double"); 
} 

yanıt aşağıdaki gibidir.

2013-04-19 17:07:29.284 float[2991:907] OK Float 
2013-04-19 17:07:29.287 float[2991:907] Over value 

Neden float değeri 10000000.01 yerine 10000000.00 olarak değiştirildi?

+5

[Google] 'ı (https://www.google.com/#q=single%20precision%20vs%20double%20precision&fp=1&bav=on.2,or.r_cp.r_qf.&cad=b) deneyin ve hakkında bilgi edinin. float (tek hassasiyet) ve çift çifte (çift hassasiyet) arasındaki fark. –

+2

SA * * Google'dır. Çoğu kullanıcının googling yaptığı yer;) –

cevap

28

float 32 bit, double ise 64-bittir. Bir floatın iki katından daha az anlamlı rakamı vardır.

float değeri, 10000000.01 ürününüzün 10 hanesini tutmak için yeterli depolama kapasitesine sahip değildir.

Daha fazla bilgi için bkz. Difference between float and double. Bu C/C++ ile ilgilidir, ancak Objective-C için de geçerlidir.

İlgili konular