Question C # Devise à la chaîne


J'interroge un champ de base de données qui renvoie une valeur monétaire, je l'affecte à une chaîne mais ajoute 00 supplémentaire à la fin.

par exemple. Retourne la requête 30.00

Je l'assigne à une chaîne (string value = Convert.ToString(ReturnValue);) mais quand je le sort, il montre comme 30.0000

Pouvez-vous me dire où je vais mal et quelle est la meilleure façon d'aborder cette question?


13
2018-03-03 23:24


origine


Réponses:


Vous pouvez utiliser codes de format de chaîne dans votre appel ToString.


9
2018-03-03 23:25



MartGriff,

Mon meilleur conseil serait de le convertir en double en utilisant le type SqlMoney. De là, vous pouvez le sortir comme vous le souhaitez!

Voici un exemple:

System.Data.SqlTypes.SqlMoney ReturnValue;

//Set your returnValue with your SQL statement
ReturnValue = ExecuteMySqlStatement();

//Get the format you want

//$30.00
string currencyFormat = ReturnValue.ToDouble().ToString("c");

//30.00
string otherFormat = ReturnValue.ToDouble().ToString("0.00");

Pour plus d'options de formatage, consultez le MSDN:

http://msdn.microsoft.com/en-us/library/system.double.tostring.aspx

Bonne chance, j'espère que ça aide.


13
2018-03-03 23:58



Voulez-vous que votre chaîne soit formatée avec un caractère de devise?

Si c'est le cas...

decimal m = 3.4;

string s = string.Format("{0:c}", m);

// s will be £3.40, $3.40, etc depending on your locale settings

6
2018-03-03 23:33



J'utiliserais quelque chose comme

string value = ReturnValue.ToString("0.00");

Cela utilise la surcharge ToString qui accepte une chaîne de format. La chaîne de format ci-dessus "0.00" spécifie deux décimales.


3
2018-03-03 23:32



Je suis actuellement en train de développer un système web pour bateau à quai, en utilisant VS 2013 Community Edition. J'essayais de savoir comment générer une valeur monétaire dans une zone de texte.

La méthode que j'ai utilisée était

fieldName.Text = decimalValue.ToString ("c");

Cela fonctionne parfaitement.


2
2018-06-08 01:38



Essaye ça:

yourValueHere.ToString("0.00")

1
2018-03-03 23:32



Dans SQLServer, un type de données monétaire équivaut à un nombre décimal avec 4 décimales de précision. Je suppose que cette précision est conservée lorsque la décimale est convertie en chaîne. La meilleure option serait de toujours utiliser une chaîne de format, par exemple "#, ## 0.00" lors de la conversion.


0
2018-03-03 23:34



Le type de données Money a une précision de 4 décimales. Vous devrez soit spécifier le format dans les arguments ToString (), soit arrondir la valeur avant de la convertir en chaîne.

Si vous utilisez .ToString (), vous n’obtenez pas d’arrondi à ma connaissance. Je pense que vous venez de perdre les chiffres.

Si vous arrondissez, vous ne faites pas que couper des chiffres. Voici un exemple à arrondir (code non testé):

string value = Math.Round(ReturnValue, 2).ToString();

0
2018-03-03 23:43



Ma recommandation est d’abord de le convertir en décimal. J'utiliserais quelque chose comme:

string value = (Convert.ToDecimal(ReturnValue)).ToString("0,0.00");

0
2017-08-11 07:03