Convertir flotter à la chaîne avec la virgule et le point
J'ai un nullable flotteur. L'interne décimales peuvent être séparés par un point ou une virgule par exemple, 1.2 ou 1,2. J'ai besoin de cette flotter comme une chaîne de caractères à comparer à une Regex. Si j'utilise le Convertir.méthode toString, le flotteur avec la virgule est de 12 et non 1.2. Comment puis-je convertir un float à la Chaîne, sans perdre la virgule ou le point? J'ai déjà essayé de le convertir avec différentes cultures.
Merci pour votre aide
et ce qui devrait 1.200,00 être analysée comme?
Pourquoi devrait-1,2 jamais être 12?
le flotteur est un pourcentage de sorte qu'il peut ne prend que des valeurs de 0,00 à 100,00 ou de 0,00 à 100,00
Si vous expliqué ce que vous voulez à accomplir, plutôt que comment vous voulez accomplir, vous pourriez avoir plus de chance.
Je ne vois pas l'argument de la pente glissante lors de la demande de clarifier une question avec des réponses sur 4, aucun avec upvotes. La question n'a pas beaucoup de sens pour moi.
Pourquoi devrait-1,2 jamais être 12?
le flotteur est un pourcentage de sorte qu'il peut ne prend que des valeurs de 0,00 à 100,00 ou de 0,00 à 100,00
Si vous expliqué ce que vous voulez à accomplir, plutôt que comment vous voulez accomplir, vous pourriez avoir plus de chance.
Je ne vois pas l'argument de la pente glissante lors de la demande de clarifier une question avec des réponses sur 4, aucun avec upvotes. La question n'a pas beaucoup de sens pour moi.
OriginalL'auteur holzleube | 2010-12-06
Vous devez vous connecter pour publier un commentaire.
Une solution pour cela peut être le suivant:
Peut-être vous avez besoin de vérifier si la
HasValue
propriété esttrue
avant d'utiliser la valeur. Pour plus d'exemples: http://alexonasp.net/samples/stringformatting/OriginalL'auteur martinhodler
Chaîne.Fonction Format() avec un masque. Mais, vous pouvez convertir vos chaînes de nombres plutôt que vos numéros de chaînes de caractères, pour les fins de la comparaison? A-t-elle à être une expression régulière de comparaison?
OriginalL'auteur Tim
Êtes-vous certain que la zone de texte permet à la fois "." et "," comme une virgule séparateur (par opposition à un groupement de caractère, aussi connu comme un des milliers de séparation)?
Lorsque vous êtes certain que vous obtenez seulement les séparateurs décimaux et non le groupement des personnages, de remplacer tout "," un "." avant d'utiliser TryParse avec un InvariantCulture pour convertir la chaîne de caractères à un flotteur.
OU utiliser la même culture dans le code côté client, de sorte que les deux utilisent le même séparateurs décimaux.
Comme d'autres l'ont mentionné, un flotteur qui n'ont pas de notion de diverses séparateurs décimaux.
OriginalL'auteur Hans Kesting
Ok j'ai résolu le problème. Je l'ai fait dans mon xaml un convertisseur qui permet de saisir les valeurs par des virgules comme séparateur, donc je n'ai pas besoin de tout vérifie si il y a seulement deux décimales. Merci pour votre aide
OriginalL'auteur holzleube
Si c'est une Application WinForm, il y a une variable statique
Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
.Dépendamment de la valeur que vous obtenez des résultats différents lors de la conversion de
ToString()
.Essayez la manipulation de ce paramètre pour atteindre le résultat requis.
OriginalL'auteur Marty
Essayer:
À l'aide de l'invariant de la culture est recommandée si vous voulez être sûr que la sortie sera en bonne et due forme, mais je serais surpris s'il y avait une culture qui n'est pas sortie une virgule ou un point.
Je dirais aussi pas l'aide d'expressions régulières pour valider la valeur d'un flotteur.
Si le code que j'ai posté imprime "12" c'est probablement parce que la valeur de l'float est en fait 12, et non 1.2 comme vous pensez qu'il est. Comment valider un flotteur dépend de quel type de validation dont vous avez besoin.
OriginalL'auteur Mark Byers