2013-06-27 49 views
16

私は、浮動小数点数のための高精度の数について多くの質問を参照してくださいが、特に私は、このコード正しい使用:: cout.precision() - 印刷していない後続のゼロ

#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を示し理由を知りたいですか?私は0.5000と思う。 元の整数データ型のためですか?

答えて

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; 
} 

あなたは末尾のゼロを表示するために、coutstd::fixedマニピュレータを渡す必要があります。

0

動作は正しいです。引数には、使用する桁数の最大値を指定します。それは最小ではありません。ゼロだけが続く場合、小数部の末尾にゼロが意味をなさないので、それらは印刷されません。あなたが印刷されたゼロにしたい場合は、適切なフラグを設定する必要があります。

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

これは、すべての数字が印刷され、「固定」に表記を設定します。

2

std::cout.precision(4);は、を使用する最大桁数を表しています。あなたは

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

を使用する場合は、すべての回でn数字を取得したい場合を意味し、たとえば、あなたがstd::fixedを使用しなければならないでしょう 。

関連する問題