J'ai des entrées suivantes: Je veux générer une séquence de double réseau avec Zmin et Zmax comme dernière valeur. Mais de la deuxième valeur jusqu'à la fin durer, il devrait être Steð · Ped par (Zmax-Zmin) / Count. P> Exemple: P> double[] result = Enumerable.Repeat(zmin, N).Select(iv => (iv +(zmax-zmin)/count)).ToArray();
4 Réponses :
public static IEnumerable<double> Range(double min, double max, double step)
{
double i;
for (i=min; i<=max; i+=step)
yield return i;
if (i != max+step) // added only because you want max to be returned as last item
yield return max;
}
Utilisation des échantillons i> b>?
Celui-ci est bon non seulement pour les nombres, mais pour des types plus complexes comme date / heure.
La deuxième méthode permet de fournir un sélecteur de résultat - utile dans certains cas. P>
January February March April May June July August September October November December January
Ceci est une amélioration de Répondre de Muhammad Hasan Khan .
La solution fonctionne bien, mais comme l'erreur décimale s'accumule au fil du temps, elle produit beaucoup d'erreur dans les décimales au fil du temps.
La première amélioration de la solution existante consiste à vous éloigner de l'accumulation d'erreurs,
double[] Myarray = classname.Range(0, 50, 0.01).ToArray();
Une autre façon est de jeter un coup d'œil à Numsharp. Mais si c'est le seul but de votre base de code pour Numsharp, il n'a pas de sens de porter autour d'une autre DLL ou d'un exe gonflé.
Un peu plus propre que les réponses existantes (à partir du 2020-01-22): Ceci utilise la multiplication au lieu de l'addition répétée, de sorte que les erreurs d'arrondi soient évitées. P> < / p>
Ce n'est pas une description d'erreur ...