2010-02-26 9 views
4

quand je reçois le champ de l'argent du serveur SQL au code vb.net, je reçois toujours 1.0000 au lieu de 1.00. comment puis-je convertir cela en 1.00 sur vb.net?vb.net affichage de la monnaie a quatre zéros au lieu de deux

TD = New HtmlTableCell 

If Not SqlDR("Price") Is DBNull.Value Then 
    TD.InnerHtml = SqlDR("Price") 
Else 
    TD.InnerHtml = "0.00" 
End If 

SQLDR est mon lecteur de données SQL

+1

montrez-nous le code que vous utilisez, ainsi nous pouvons vous dire comment le réparer. –

+0

question juste éditée – unire

Répondre

2

C'est parce que SQL Server stocke le champ de l'argent avec 4 décimales. Pour le voir avec 2, utilisez la méthode String.Format.

String.Format("{0:c}", 10) ''result: $10.00 

String.Format("{0:N2}", 10) ''result: 10.00 

Voir ces pages pour plus de façons de formater vos numéros

+0

@Gabriel McAdams: Le nombre de décimales dans SQL Server n'a * rien * à voir avec le nombre de décimales affichées en sortie. On peut l'afficher avec plus ou moins de décimales, s'ils le souhaitent. Ce qui compte, c'est le type que le type MONEY dans SQL Server est traduit lorsqu'il est introduit dans l'espace .NET, et même alors, combien de décimales le type peut contenir n'est pas pertinent car on peut toujours ajouter ou supprimer des décimales dans l'affichage * *. – casperOne

+0

@Casper: Je suis complètement d'accord. –

+0

Alors pourquoi faire référence à ce fait dans votre réponse? – casperOne

1

Vous devez formater les données lorsque vous le sortir:

myMoney.ToString("0.00"); 
1

Êtes-vous sûr de ne pas confondre l'affichage de la valeur avec la valeur réelle?

1.0000 et 1,00 ont la même valeur.

Si vous souhaitez afficher uniquement un certain nombre d'emplacements lors de la conversion d'une valeur en chaîne, vous devez rechercher la chaîne de format à transmettre à la méthode ToString sur les structures Decimal, Double, Single, Custom Numeric Format Strings section in the MSDN documentation ou la méthode statique Format sur la classe String.