-1

J'essaie d'ajouter des nombres doubles qui commencent par 0,5,0,6 ... à 179,9,180.0. Pour ce faire, j'ai utilisé le code suivant;C++ Builder et Double Precision

void __fastcall TForm1::FormCreate(TObject *Sender) 
{ 
    for (double i = 1; i <= 180; i+=0.1) { 
     listDegrees->Items->Add(i); 
    } 
} 

mais quand je lance le programme, il montre quelque chose comme ceci:

http://imgur.com/Ap6Tosj

Comment puis-je réduire le nombre que deux précision?


édité:

J'ai un projet pour mon école. Nous ferons quelques activités avec des circuits électroniques de sorte que, lorsque je choisis une coordonnée du programme, le circuit électronique tournera à droite/à gauche/vers le bas ou vers le haut. Alors que j'ai besoin de ça.

le programme devrait être l'application de Windows pour être utile pour tout le monde. la capture d'écran du programme est comme ça; http://i.imgur.com/APRB8WY.png

jusqu'à présent tout le code que j'ai est que j'ai partagé auparavant. Je devine, je dois éditer ListBox1-> Items-> Add (i); partie de mon code pour faire face à ce problème.

+1

voir http://programmers.stackexchange.com/questions/101163/what-causes-floating-point-rounding-errors. Si la précision est vraiment importante pour vous, pensez à utiliser une bibliothèque décimale. – Dunes

+0

Il s'agit d'un problème lié à l'impression des nombres à virgule flottante. Veuillez montrer la partie de votre code qui imprime les nombres. – NicholasM

Répondre

1

Il est facile de trouver cette question dans google. Il y a une fonction dans cout, setprecision. Pour plus d'informations, cliquez ici http://www.cplusplus.com/reference/iomanip/setprecision/

+0

Je l'ai essayé. Je peux utiliser cette méthode pour les applications console, mais pour les applications Windows, je ne sais pas comment je peux utiliser. – user3552878

+0

Qu'est-ce que vous utilisez pour faire gagner l'application WinForm? –

+0

C++ Builder utilise la bibliothèque de composants visuels (aka VCL) ou FireMonkey (aka FMX), tous deux d'Embarcadero, pour écrire des applications Windows. Il devrait probablement utiliser Format() ou FormatFloat() de la VCL pour obtenir une chaîne (format propriétaire compris par la VCL) formatée à sa guise. –