2013-08-23 59 views
7

ben şu var programı:LCC Printf kayan nokta

#include <stdio.h> 

int main(int args, char *argv[]) { 
    printf("%f\n", 0.99999); 
    printf("%e\n", 0.99999); 
} 

sonucudur:

0.009990 
9.999900e-001 

Neden ilk sayı yanlış? Ben Windows XP, derleyici "Logiciels Informatique lcc-win32 sürüm 3.8. Derleme tarihi: 30 Kasım 2012 19:38:03" kullanıyorum.

+0

[lcc] (http://en.wikipedia.org/wiki/LCC_ (derleyici)) veya türevini [lcc-win] kullanıyor musunuz (http://www.cs.virginia.edu/~lcc) -win32 /)? #include eklerseniz aynı soruna sahip misiniz? (Bu sadece hassas bir problem değil; çıkış 100 faktörle kapalıdır.) –

+0

printf kullanırken ("% e \ n", 0,99999); Cevap doğru 9999900e-001 Sorun sadece belirli numaralar için geçerlidir. – user2712052

+0

Ben lcc-win kullanıyorum ve evet dahildir. – user2712052

cevap

2

program doğrudur ve bunun çıkışı olmalıdır Yani: Buna çok benzer

0.999990 
9.999900e-01 

falan.

(Sen args veya argv, kullanmayan ve main ilk parametre için olağan adı argc ziyade args, ama bunların hiçbiri programınızın davranışını etkiler gereken bir sorundur.)

O Uygulamanızda, muhtemelen derleyici tarafından değil, çalışma zamanı kitaplığında bir hata bulduğunuz görülüyor. Kısa Google aramalarım, bu belirli hataya bir referans olmadı (aslında, en üst sırada bu soru). Lcc-win idaresine başvurmanızı öneririm; iletişim bilgileri web site üzerindedir. Kısa bir açıklama ve bu soruya bir bağlantı, en azından başlangıç ​​için yeterli bilgiyi sağlamalıdır.