2016-03-29 14 views
1

Temel C++ çıktı sistemi (örneğin iostream veya sstream) kullanarak bazı çift değerler yazdırmam gereken bir sorun var ve bu değer bir şekilde çok kesiliyor. Örneğin :Çift sayılar çıktı kesiliyor

double a = 283752.24234; 
    std::cout << 283752.24234 << std::endl; 
    std::cout << a << std::endl; 

çıkışların Hem olacaktır 283752

Neden böyle oluyor ve herhangi bir çift değerin tam verim almak için ne yapabilirim? böyle oluyor Neden

+0

Bu sorun değil, ama bunu yaptığı ekstra şeyler gerekmedikçe 'std :: endl' kullanmayın. '\ n \ 'bir satır biter. –

+2

@PeteBecker 'flush()' aslında bu örnek için aranabilir. OP'yi karıştırmayın. –

+0

@ πάνταῥεῖ - Göremiyorum. Bu rutin çıktı. 'flush()' anlamsızdır. –

cevap

2

... default precision 6 ve bu nedenle sadece en önemli 6 basamak 283752 işlendiği için var

.

... ve herhangi bir çift değerin tam çıktısını almak için ne yapabilirim?

#include <iostream> 
#include <iomanip> 

int main(){ 
    double a = 283752.24234; 

    std::cout << std::setprecision(12) << 283752.24234 << std::endl; 
    std::cout << std::setprecision(12) << a << std::endl; 
} 

Live Demo

  • İkinci seçenek std::fixed kullanmaktır bakın I/O:

    1. İlk seçenek std::setprecision() G/Ç manipülatör kullanılarak daha büyük precision değerini kullanmaktır ondalık noktasından sonraki değerleri göstermek için komut dosyası:

      #include <iostream> 
      #include <iomanip> 
      
      int main(){ 
          double a = 283752.24234; 
      
          std::cout << std::fixed << 283752.24234 << std::endl; 
          std::cout << std::fixed << a << std::endl; 
      } 
      

      Live Demo

    Çıktı bakınız:

    283752.242340 
    283752.242340 
    
    İlgili konular