C # Décimal à numérique (?,?)
Question
J'ai un problème, je n'ai pas encore trouvé la solution, alors je demande votre aide. Dans ma base de données, il existe des entiers, décimaux et chaînes qui doivent être convertis en chiffres avec une longueur et une précision spécifiques pour pouvoir être inclus dans un fichier à plat.
ex:
integer 123 to numeric(8,0) ==> 00000123
decimal 123,123 to numeric(8,8) ==> 0000012312300000
String "22" to numeric(8,0) ==> 00000022
Il ne peut pas mettre de virgule ou de point. Y a-t-il une solution facile J'essaie beaucoup de choses, mais personne ne me donnera mon résultat, si ce n'est de faire des boucles pour chaque fichier classé dans mon fichier plat trop sale !!
EDIT:
Le fichier à plat reçoit des informations en fonction de leur point de départ et de leur longueur, de sorte que chaque donnée incluse dans le fichier doit avoir une certaine longueur. Et pour le numérique j'ai par exemple
database Decimal Price = 123,456
File Numeric(8,6) Price = 00000123456000
Je voulais savoir comment analyser des données décimales ou entières basées sur N (, )
La solution
Essayez ceci:
string ToNumericString(int value) {
return value.ToString("00000000");
}
string ToNumericString(decimal value) {
var value16 = Math.Truncate(value * 100000000);
return value16.ToString("0000000000000000");
}
string ToNumericString(string value) {
return ToNumericString(int.Parse(value, CultureInfo.InvariantCulture));
}
Pour l'appeler:
MessageBox.Show(ToNumericString(123));
MessageBox.Show(ToNumericString(123.123M));
MessageBox.Show(ToNumericString("22"));
ou plus général:
string ToNumericString(decimal value, int digitsBefore, int digitsAfter) {
var value16 = Math.Truncate(value * (decimal)Math.Pow(10,digitsAfter));
return value16.ToString(new String('0', digitsBefore + digitsAfter));
}
MessageBox.Show(ToNumericString(123.123M, 8, 3));
Autres conseils
Extraire String.Format
: