2016-12-27 22 views
0

Число должно отображаться ровно пятью цифрами после десятичной. Если число равно 0 для отображения только 0 вместо 0,00000. Если число имеет нули в его десятичной записи только показать другие цифры от нуля, например 0.08500 вместо вывод 0,085 // s0 моего переменногоПоказать пять цифр после десятичной точки в C++, но если они есть после десятичной точки, не печатайте их

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

И в чем проблема с кодом, который у вас есть (помимо незаконного состояния)? Для какого-то определенного значения 's0', что является ожидаемым и * актуальным * выходом? –

+0

ожидается: 0.085, но мой код print: 0.08500 –

+0

Вы хотите только напечатать «0», если s0 точно равно 0 или всякий раз, когда ваш выход будет «0.00000», т. Е. Если s0 окажется <0.00001? – Oncaphillis

ответ

2

Try:

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++. (также, cout, судя по тегам). –

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

станд :: соиЬ < < станд :: setprecision (5) < < s0; Это лучший способ настройки точности.