2016-12-27 2 views
0

Le nombre doit être affiché avec exactement cinq chiffres après la virgule. Si le nombre est 0 pour afficher seulement 0 au lieu de 0.00000. Si le nombre de zéros a dans son enregistrement décimal n'affiche les numéros autres que zéro, par exemple 0,08500 au lieu de produire 0,085 // s0 est ma variableAfficher cinq chiffres après la virgule décimale en C++ mais s'il y en a 0 après la virgule, ne pas les imprimer

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

Et quel est le problème avec le code que vous avez (en plus de la condition illégale)? Pour une valeur spécifique de 's0', quelle est la sortie attendue et * réelle *? –

+0

est attendu: 0.085 mais mon code imprime: 0.08500 –

+0

Voulez-vous seulement imprimer "0" si s0 est exactement 0 ou chaque fois que votre sortie serait "0.00000", c'est-à-dire si s0 est <0,00001? – Oncaphillis

Répondre

2

Essayez:

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

Dans votre version setiosflags(ios::fixed) est en train de forcer des zéros à la fin.

+0

Cela fonctionne. Merci beaucoup. :) –

+0

@ElizMazalova s'il vous plaît marquer cette réponse comme acceptée si elle a répondu à votre question. Cela le supprime de la liste des questions sans réponse et permet à d'autres personnes de le parcourir avec succès. –

0

Cela semble évident, mais pourriez-vous utiliser printf?

#include <stdio.h> 

int main(){ 

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

Cette question semble être spécifique à C++. (aussi, cout, à en juger par les tags). –

0

Vous ne pouvez pas faire facilement en C++ avec les courants et < opérateur <, parce que 0 est un cas particulier.

Ecrire une fonction

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

    } 

Puis

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

std :: Cout < < std :: SetPrecision (5) < < s0; C'est la meilleure méthode pour régler la précision.