在c ++中小数点后显示五位数但如果小数点后有0则不打印它们

时间:2016-12-27 10:40:27

标签: c++ decimal cout digits

必须在小数点后正好显示五位数。如果数字为0则仅显示0而不是0.00000。如果数字在其十进制记录中有零,则仅显示零以外的数字,例如0.08500而不是输出0.085 // s0是我的变量

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

4 个答案:

答案 0 :(得分:2)

尝试:

 var results = DealerTFNDatesTable
     .GroupBy(x => new { x.AffiliateID, x.Date })
     .Select(x => new DailySummary {
        AffiliateID = x.First().AffiliateID,
        Date = x.First().Date,
        TotalCalls = x.Sum(y => Convert.ToInt32(y.TotalCalls)).ToString()
     });

在您的版本foreach (var x in results) { Console.WriteLine($"id = {x.AffiliateID}, date = {x.Date}, totalCalls = {x.TotalCalls}"); } > id = 0, date = 12/12/2016, totalCalls = 68 > id = 0, date = 12/13/2016, totalCalls = 74 > id = 1, date = 12/22/2016, totalCalls = 63 中强制尾随零。

答案 1 :(得分:0)

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

#include <stdio.h>

int main(){

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

答案 2 :(得分:0)

你不能用C ++和&lt;&lt;在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";

答案 3 :(得分:0)

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