Comment formater un Double
en un String
en C # pour n'avoir que deux décimales?
Si j'utilise String.Format("{0:0.00}%", myDoubleValue)
le nombre est alors arrondi et je veux une simple troncature sans aucun arrondi. Je souhaite également que la conversion String
soit sensible à la culture.
Réponses:
J'utilise ce qui suit:
Par exemple:
Si le numéro est 50,947563 et que vous utilisez ce qui suit, les événements suivants se produiront:
Et votre réponse est tronquée, maintenant pour formater la chaîne, procédez simplement comme suit:
la source
string.Format
étape qui formate la chaîne. Voir ma réponse ci-dessous.Ce qui suit arrondit les nombres, mais n'affiche que 2 décimales maximum (en supprimant les zéros de fin), grâce à
.##
.http://dobrzanski.net/2009/05/14/c-decimaltostring-and-how-to-get-rid-of-trailing-zeros/
la source
Je vous suggère de tronquer d'abord, puis de formater:
Utilisez la constante 100 pour tronquer 2 chiffres; utilisez un 1 suivi d'autant de zéros que de chiffres après la virgule décimale que vous souhaitez. Utilisez le nom de culture dont vous avez besoin pour ajuster le résultat de la mise en forme.
la source
new CultureInfo("de-DE")
, vous devriez utiliser la propriété staticCulture.InvariantCulture
Méthode la plus simple, utilisez des chaînes de format numérique:
la source
j'utilise
price.ToString("0.00")
pour obtenir les 0 premiersla source
La fonction c #, telle qu'exprimée par Kyle Rozendo:
la source
Que diriez-vous d'ajouter une décimale supplémentaire à arrondir puis à supprimer:
la source
Cela fonctionne pour moi
la source
Je sais que c'est un vieux fil mais j'ai juste dû le faire. Bien que les autres approches fonctionnent ici, je voulais un moyen simple de pouvoir affecter de nombreux appels à
string.format
. Donc, ajouter leMath.Truncate
à tous les appels n'était pas vraiment une bonne option. De plus, comme une partie du formatage est stockée dans une base de données, la situation est encore pire.Ainsi, j'ai créé un fournisseur de format personnalisé qui me permettrait d'ajouter une troncature à la chaîne de formatage, par exemple:
La mise en œuvre est assez simple et est facilement extensible à d'autres exigences.
la source
J'ai eu ce problème avec Xamarin Forms et je l'ai résolu avec ceci:
la source
Pour ce qui vaut, pour afficher la devise, vous pouvez utiliser
"C"
:Production:
$1.99
la source
Vous pouvez également écrire votre propre IFormatProvider , même si je suppose que vous devrez éventuellement penser à un moyen de faire la troncature réelle.
Au moins, il serait facilement réutilisable.
Il existe un article sur la façon d'implémenter votre propre IFormatProvider / ICustomFormatter ici sur CodeProject . Dans ce cas, "étendre" un format numérique existant peut être le meilleur choix. Cela n'a pas l'air trop dur.
la source
Ce qui suit peut être utilisé pour l'affichage uniquement qui utilise la propriété de String.
la source
Solution:
la source
Notez également les informations sur la culture de votre système. Voici ma solution sans arrondir.
Dans cet exemple, il vous suffit de définir la variable MyValue comme double. En conséquence, vous obtenez votre valeur formatée dans la variable de chaîne NewValue .
Remarque - Définissez également l'instruction en utilisant C #:
la source