2 votes

Comment puis-je afficher la décimale et les deux chiffres qui la suivent lors de la conversion d'un int en double ?

Étant donné des valeurs telles que 123, 1234 et 12345, j'ai besoin de les convertir en, respectivement, 1,23, 12,34 et 123,45.

Ce code, lorsque je saisis 123, puis 1234, puis 12345 dans la zone de texte 2 :

int originalVal = Convert.ToInt16(textBox2.Text);
double doubled = Convert.ToDouble(originalVal/100);

...me donne 1, 12, et 123 au lieu des 1.23, 12.34, et 123.45 attendus.

Que dois-je faire pour obtenir le résultat souhaité ? Veuillez noter qu'il s'agit d'un projet Windows CE / Compact Framework utilisant VS2003 et .NET 1.1.

12voto

Greg Hewgill Points 356191

Vous faites une division entière, parce que les deux originalVal y 100 sont eux-mêmes des entiers. Essayez :

originalVal/100.0

L'utilisation de 100.0 permet au compilateur de générer du code pour une division en virgule flottante. Alternativement, ceci aurait le même effet :

Convert.ToDouble(originalVal)/100

où vous convertissez votre originalVal entier en un double avant faire la division.

2voto

David B Points 53123
double originalVal = Convert.ToDouble(textBox2.Text);
double doublePercented = originalVal/100D;

2voto

jp2code Points 8461

Je vois que vous avez déjà votre réponse, mais...

private TextBox txtNumerator, txtDenominator, txtResult;

public MyClass() {
  txtNumerator = new TextBox();
  txtNumerator.TextChanged += new TextChangedEvent(TextBox_TextChanged);
  txtDenominator = new TextBox();
  txtResult = new TextBox();
}

private void TextBox_TextChanged(object sender, EventArgs e) {
  double numerator = Convert.ToDouble(txtNumerator.Text.Trim());
  double denominator = Convert.ToDouble(txtDemominator.Text.Trim());
  if (denominator != 0) {
    double result = numerator / denominator;
    // Ref: http://www.csharp-examples.net/string-format-double/
    txtResult.Text = string.Format("{0:0.00}", result);
  } else {
    throw new DivideByZeroException("Denominator can not be zero.");
  }
}

Vous avez spécifiquement demandé comment obtenir le double à 2 décimales. String.Format le fera pour vous.

En outre, grâce aux gestionnaires d'événements, vos collaborateurs n'ont jamais à cliquer sur un bouton de calcul.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X