Convertir Entier de la Monnaie
Nous avons une base de données qui stocke les nombres(de l'argent) dans la devise de base, de sorte £21.30 est stockée en tant que 2130 dans la base de données. Comment pourrais-je aller sur la conversion d'un nombre à un correctement formaté monnaie pour toutes les cultures?
2130 -> £21.30
2130 -> $21.30
etc
Êtes-vous le formater en C# ou en SQL?
£21.30 n'est pas le même que $21h30, au moins pas aujourd'hui les taux de conversion... Êtes-vous le stockage de la devise spécifique avec la valeur?
c# de préférence avec de la ficelle.format
£21.30 n'est pas le même que $21h30, au moins pas aujourd'hui les taux de conversion... Êtes-vous le stockage de la devise spécifique avec la valeur?
c# de préférence avec de la ficelle.format
OriginalL'auteur Lee Treveil | 2012-01-18
Vous devez vous connecter pour publier un commentaire.
Pourrait être rapidement extension methodified:
de sorte que vous pouvez maintenant être DRYier:
comme toutes les cultures ont 2 décimales après les chiffres, comment savez-vous en regardant la valeur dans la base de données où le point décimal est supposé être? Êtes-vous en disant: 2130 pourrait être 21.30 ainsi, éventuellement, 2.130 ou 213.0 ou 2130.00?
dans ce cas, vous aurez à stocker colonne supplémentaire dans votre base de données indiquant que la culture a été utilisé lors de la conversion de la valeur d'origine en un entier de sorte que vous savez combien de diviser. Comme François Wahl a souligné vous ne pouvez pas savoir cela, étant donné un entier tel que 2130.
Supposons que je sais de la la culture de toutes les valeurs dans la base de données.
dans ce cas, tout simplement s'adapter ma méthode d'extension de diviser par la valeur correcte, que vous savez déjà. Peut être passé en argument, par exemple, la méthode d'extension. Ou si vous connaissez la culture, vous pouvez utiliser les
CultureInfo.NumberFormat.CurrencyDecimalDigits
propriété qui vous donne le nombre de chiffres après la virgule pour une culture donnée.OriginalL'auteur Darin Dimitrov
Cependant. Cela signifie que £123.45 devient $123.45 ou €123.45, qui n'est clairement pas la bonne.
Puis il y a le problème du Peso/Dollar signe $ peut être utilisé pour représenter NIO, AUD, CAD, en HAUT, en USD, HKD, et un tas plus. Ce n'est pas le seul symbole qui voit les utiliser dans plusieurs endroits. Si vous êtes à l'enregistrement de vieux paiements, même des choses comme £ utilisé pour l'IEP et de l'ITL (qui n'est plus en cours d'utilisation) peut devenir un problème.
Peut donc le fait que vous stockiez les valeurs en nombres entiers de pourcentage-de-main-unité, qui ne s'applique pas à toutes les devises.
Une valeur monétaire n'est significatif avec un implicite ou explicite de la monnaie. Ici vous êtes en prendre un qui soit n'en a pas, ou vous êtes en remplacement de l'implicite à l'explicite, ou vous êtes en fonction d'un très grand morceau de l'annulation de la logique de garder les choses correctes.
La dernière de ces travaux, mais se heurte. Les deux autres sont tout simplement faux.
Enfin, à la culture, au mieux, vous indique quelle devise les gens sont plus familiers avec, mais pas ce qu'ils vont toujours de l'utiliser. J'utilise souvent des couronnes et øre, mais j'utilise Hiberno-anglais lors de l'utilisation de tous de la même manière.
Je vous recommande de stocker les codes ISO 4217 avec les monnaies. C'est une bonne idée de l'avoir quelque part sur la facture finale. Le symbole est bon pour la beauté, le code est bon d'avoir des choses précises.
Ignorer la culture de l'utilisateur, sauf peut-être comme un best-deviner un choix par défaut. (par exemple, si ils sont Américains alors qu'ils probablement souhaitez utiliser USD, mais ne veulent pas). Il n'y a pas beaucoup de devises dans le monde, voici donc une liste de tous les bar quelques Internationales spécialisées en-cas d'utilisation:
Oh regarde. Le Zimbabwe avaient leur propre dollar, la dernière fois que j'ai mis à jour. Ce qui peut arriver plus vite, vous le déposez dans la liste, ou un cadre est mise à jour à faire?
OriginalL'auteur Jon Hanna
Voici comment le faire en c# avec de la ficelle.format:
Qui vous obtient le format de la culture actuelle. Plus d'informations sur MSDN
OriginalL'auteur Blorgbeard
OriginalL'auteur Dennis Traub
Essayez ce qui suit:
OriginalL'auteur MyKuLLSKI