2013-06-27 15 views
16
baskı yapmadığı

ben kayan nokta sayıları için hassas numarası hakkında birçok soru bkz ancak özellikle bu koddoğru kullanımı :: cout.precision() - sondaki sıfırları

#include <iostream> 
#include <stdlib.h> 
int main() 
{ 
    int a = 5; 
    int b = 10; 
    std::cout.precision(4); 
    std::cout << (float)a/(float)b << "\n"; 
    return 0; 
} 

0.5 gösterir neden bilmek istiyorum? 0.5000'u görmeyi bekliyorum. Orijinal tamsayı veri türleri nedeniyle mi?

cevap

17
#include <iostream> 
#include <stdlib.h> 
#include <iomanip> 
int main() 
{ 
    int a = 5; 
    int b = 10; 
    std::cout << std::fixed; 
    std::cout << std::setprecision(4); 
    std::cout << (float)a/(float)b << "\n"; 
    return 0; 
} 

Sen sondaki sıfırları göstermek için cout için std::fixed manipülatör geçmesi gerekiyor.

0

Davranış doğrudur. Bağımsız değişken, kullanılacak maksimum anlamlı basamak miktarını belirtir. En az değil. Yalnızca sıfırlar takip edildiyse, yazdırılmazlar çünkü ondalık bölümün sonunda sıfırlar anlamlı değildir. Eğer baskılı sıfır istiyorsanız, o zaman uygun işaretleri ayarlamak gerekir:

std::cout.setf(std::ios::fixed, std::ios::floatfield); 

Bu, tüm rakamları yazdırır "sabit" gösterimi, ayarlar.

2

std::cout.precision(4);, maksimum hanenin en azını kullanmasını söyler. Eğer std::fixed kullanması gerekir her zaman n basamak almak istiyorsanız anlamına gelir, örneğin,

precision 4 on 1.23456 you get 1.234 
precision 5 on 1.23456 you get 1.2345 

kullanırsanız.

İlgili konular