2016-12-27 667 views
0

该数字必须在小数点后显示5位数字。如果数字为0,则只显示0而不显示0.00000。如果数字零在他的小数记录只显示其他数字大于零,例如0.08500,而不是输出0.085 // S0是我的变量在C++中显示小数点后的五位数字,但如果小数点后面有0,则不要打印它们

if (s0==) cout<<"0" 
else cout<<setiosflags(ios::fixed)<<setprecision(5)<<s0; 
+0

你有什么问题(除非法条件)?对于's0'的某个特定值,预期和实际*输出是什么? –

+0

预期:0.085但我的代码打印:0.08500 –

+0

如果s0恰好为0或只要输出为“0.00000”,即如果s0碰巧<0.00001,您是否只想打印“0”? – Oncaphillis

回答

2

尝试:

std::cout << std::setprecision(5) << s0; 

在你setiosflags(ios::fixed)版本迫使尾随零。

+0

它的工作原理。万分感谢。 :) –

+0

@ElizMazalova请标记此答案为接受,如果它已经回答了你的问题。这将其从未解答的问题列表中移除,并使其他人能够成功地谷歌搜索。 –

0

这似乎很明显,但你可以使用printf吗?

#include <stdio.h> 

int main(){ 

    printf("%5.3f", 0.8500000000); 
    return 0; 
} 
+0

这个问题似乎是特定于C++。 (也就是说,由标签判断)。 –

0

你不能轻易做它在C++与流和< <运营商,因为0是一个特例。

写功能

std::string tonice(double x) 
{ 
    char buff[64]; 
    if(x == 0) 
     sprintf(Buff, "0"); 
    else 
     sprintf(buff, "%5.3f", x); 
    return std;string(buff); 

    } 

然后

cout << "The data is " << tonice(x) << " other bits and bats"; 
0

的std :: COUT < <的std :: setprecision(5)< < S0; 这是设置精度的最佳方法。

相关问题