2013-03-19 24 views
5

Ben değerlerinde alır ve bunun gibi değerleri dışarıda yazdıran bir C++ program var değerleri:C şamandıra dışarı yazdırma

getline(in,number); 
cout << setw(10) << number << endl; 

Ben değerlerinde alır ve böylece gibi dışarı yazdırır eşdeğer C programı var:

fscanf(rhs, "%e", &number); 
printf("%lf\n", number); 

Ancak C++ programı yazdırılırken, C program 0.309510'u yazdırır. Daha fazla örnek: C++: 0.0956439 C: 0.095644. Değer 7 basamak uzun olduğu sürece aynı sonuçları yazdırıyor gibi görünüyor, ancak 7 basamaktan daha kısasa, ek bir 0 ekler. Ve 7 basamaktan uzunsa, 6 basamağa kadar yuvarlar. C sonuçlarının C++ programına uymasını istiyorum. Herhangi bir yardım takdir edilecektir.

Teşekkürler.

Not: sayı bir sayıdır ve bir dosyadan dosya okunmaktadır. C biçimli baskı tablolara uzunluğu ve hassas belirteçleri

+1

C sonuçlarını C++ veya tam tersi ile eşleştirmek için değiştirmek ister misiniz? –

+0

Doğru, C sonucunun C++ ile eşleşmesini istiyorum. – FidelCashflo

cevap

8

avantajından yararlanın: altı karakter genişliğinde bir "hücre" sinde

printf("%6.4lf", number); 

Baskılar dört ondalık.

int precision = 4; 

printf("%6.*lf", precision, number); 
8

C uzunluğu ve hassas belirteçleri yararlanın ++ iostream s

std::cout.precision(4); 
std::cout << std::setw(10) << number << "\n"; 
4
printf("%g\n", number); 
:

Sen zamanında o değer sağlamak için her iki uzunluk veya hassasiyet için bir joker karakter kullanabilirsiniz

Sorununuzu çözecek,% lf çift için kullanılıyor, yüzdelik için% f, tüm ondalık basamakları görüntülemek ve sıfırları kesmek istediğinizde% g float için kullanılıyor.