C# Double - ToString() mise en forme avec deux décimales, mais pas d'arrondi
Comment dois-je formater un Double
à un String
en C# pour avoir seulement deux décimales?
Si j'utilise String.Format("{0:0.00}%", myDoubleValue)
le nombre est arrondi et je veux d'un simple tronquer sans arrondi. Je tiens aussi à la conversion de String
à la culture sensible.
- Qu'entendez-vous par "culture sensible"? Est-ce à dire que le résultat de la mise en forme doit varier en fonction de programmeur-à condition valeur de culture? Ou voulez-vous utiliser quelle que soit la culture est la valeur par défaut pour le thread en cours?
Vous devez vous connecter pour publier un commentaire.
J'utilise la suite:
Par exemple:
Si le nombre est 50.947563 et que vous utilisez la suite, la suite va arriver:
Et il n'y est une réponse tronquée, maintenant pour le format de la chaîne de simplement faire ce qui suit:
string.Format
étape que les formats de la chaîne. Voir ma réponse ci-dessous.Suivantes tours les chiffres, mais ne montre jusqu'à 2 décimales (en supprimant tous les zéros de fin), grâce à
.##
.http://dobrzanski.net/2009/05/14/c-decimaltostring-and-how-to-get-rid-of-trailing-zeros/
Je vous suggère de le tronquer en premier, puis format:
Utiliser la constante 100 pour les 2 chiffres tronquer; utiliser un 1 suivi d'autant de zéros que les chiffres après la virgule que vous souhaitez. Utiliser le nom de culture vous avez besoin d'ajuster la mise en forme de résultats.
Méthode la plus simple, l'utilisation de chaînes de format numériques:
- je utiliser
price.ToString("0.00")
pour obtenir le premier 0s
Ce travail est pour moi
Le c#, fonction, tel qu'exprimé par Kyle Rozendo:
Comment ajouter une décimale supplémentaire qui doit être arrondie et puis supprimées:
Je sais que c'est un vieux thread mais j'ai juste eu à le faire. Alors que les autres approches de travail, je voulais un moyen facile d'être en mesure d'influer sur beaucoup d'appels à
string.format
. Ainsi, l'ajout de laMath.Truncate
à tous les appels à n'était pas vraiment une bonne option. Aussi, comme certains de la mise en forme est stockée dans une base de données, il a fait encore pire.Donc, j'ai fait un format personnalisé fournisseur qui me permettrait d'ajouter de la troncature de la chaîne de mise en forme, par exemple:
La mise en œuvre est assez simple et est facilement extensible à d'autres exigences.
Suivants peuvent être utilisés uniquement pour l'affichage qui utilise la propriété de Chaîne ..
À ce qui vaut la peine, pour montrer monnaie, vous pouvez utiliser
"C"
:De sortie:
$1.99
Vous pouvez également écrire votre propre IFormatProvider, mais je suppose que par la suite vous auriez à réfléchir à un moyen de faire le troncature.
Au moins, il serait facilement réutilisables.
Il y a un article sur la façon de mettre en œuvre votre propre IFormatProvider/ICustomFormatter ici, à CodeProject. Dans ce cas, "l'extension" un format numérique pourrait être le meilleur pari. Il n'a pas l'air trop dur.
J'ai eu ce problème avec xamarin et résolus avec:
Solution:
Note également de la CultureInformation de votre système. Voici ma solution sans arrondi.
Dans cet exemple, vous devez définir la variable Mavaleur double.
Comme résultat que vous obtenez votre valeur mise en forme dans la variable de chaîne NewValue.
De Note Également définir le C# à l'aide de déclaration: