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 (, )

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top