Question

Je tente de créer des étiquettes - graphique axe pour le texte physique. Je sais comment obtenir les étiquettes et les imprimer en utilisant GDI, mais mon algorithme ne fait pas un bon travail d'impression avec pas fractionnaires.

Pour imprimer les étiquettes, je reçois actuellement la première étiquette, puis ajouter une étape à chaque étiquette qui suit:

public static void PrintLabels(double start, double end, double step);
{
    double current = start;

    while (current <= end)
    {
        gfx.DrawString(current.ToString(),...); 
        current += step;
    }
}

Y at-il un number.ToString("something") qui imprimera décimales si elles sont là, sinon que toute la partie? Je voudrais tout d'abord vérifier si l'début, la fin ou à l'étape contient une partie décimale, alors si oui, imprimer toutes les étiquettes avec une décimale.

Était-ce utile?

La solution

Voir les chaînes de format personnalisé ici: http://msdn.microsoft. com / fr-fr / bibliothèque / 0c899ak8.aspx Je pense que je comprends votre question de départ ...

   current.ToString("#0.#");

vous donner le comportement que vous demandez? J'utilise souvent "#,##0.####" pour des étiquettes similaires. En outre, voir cette question: Mise en forme des nombres avec des chiffres significatifs en C #

Autres conseils

Il n'y a rien de mal avec de l'aide d'une chaîne de format personnalisé, mais le chaîne de format standard numérique général ( « G ») fonctionnera bien dans ce cas aussi que j'ai récemment rappelé:

current.ToString("G");

Voici un exemple rapide, autonome qui juxtapose la coutume et format chaîne standard approches ...

double foo = 3.0;
double bar = 3.5;

// first with custom format strings
Console.WriteLine(foo.ToString("#0.#"));
Console.WriteLine(bar.ToString("#0.#"));

// now with standard format strings
Console.WriteLine(foo.ToString("G"));
Console.WriteLine(bar.ToString("G"));

..., ce qui donne:

3
3.5
3
3.5
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top