Je veux un entier de se multiplier de 10 100.1000, etc. P>
pour par exemple double val = 35 puis je veux int 40
val = 357 alors je veux Int Val = 400
val = 245,567 alors je veux Int Val = 300 000
val = 245.567.986 Ensuite, je veux aussi INT = 300 000 P>
Y a-t-il quelque chose dans C # qui peut aider à générer ces entiers p>
La logique de base que je peux penser est: extraire le premier entier, ajouter 1 à celui-ci. Comptez le nombre total de chiffres et ajoutez des zéros (totalno -1). p>
Y a-t-il un meilleur moyen? p>
Je veux affecter ces valeurs à l'axe du graphique. J'essaie de créer de manière dynamique les valeurs d'étiquette axe en fonction des données de données des graphiques. p>
4 Réponses :
ne peut pas vous donner un Si cela concerne la sortie, vous pouvez en effet utiliser la chaîne, sauter / ajuster le premier nombre, etc. p> C # CODE> -SPecific Répondre, mais généralement ce que vous recherchez est
log10 code>, quoi que ce soit appelé dans
c # code >. Si vous voulez utiliser le numéro. P>
Cela devrait faire ce que vous voulez où vous voulez où x est l'entrée: sortie: p> Si vous voulez que cela gère Numéros négatifs (en supposant que vous souhaitez arranger de 0): p> ce qui donne: p>
Cette approche échouera toutefois pour des valeurs négatives de x
Je ne m'attends pas à des valeurs négatives de x
En effet mais trivial à réparer. Il suffit d'utiliser math.abs (x) dans les lignes ci-dessus et multiplier par math.Sign (x) pour obtenir le résultat
Mais l'approche peut facilement être étendue à l'entrée négative et 0 (!).
OK..Je va étendre les valeurs négatives car les données permettront de changer de différentes bases de données ...
Pouvez-vous expliquer la raison mathématique de (int) math.log10 (x) s'il vous plaît?
Cela trouve la plus haute puissance de 10 ci-dessous x. Math.log10 (x) est la fonction inverse de math.pow (10, x) (c'est-à-dire math.pow (10, math.log10 (x)) = x). Le (int) est juste pour arrondir le résultat jusqu'au plus haut entier ci-dessous.
@Jdunkerley: Je considère que 0.0 n'est toujours pas traité correctement. Cela ne fonctionne que parce que vous montez à int code> dans la deuxième ligne. Notez que
math.ceiling (math.abs (x) / échelle) * échelle code> évalue vers
nan code>. Bien sûr, le résultat est correct, mais les valeurs intermédiaires n'ont aucun sens.
@Divo: En effet, vous êtes correct mon erreur. Mettra à jour pour répondre plus correctement avec 0
@ssal: Même si vous ne vous attendez pas à des valeurs négatives de x code>, la meilleure pratique ici est de mettre en œuvre la fonction pour gérer correctement les valeurs négatives. Cela ne vous coûte rien en termes de temps de développement, rien en termes de temps de performance, mais je pourrais sauvegarder des oodules de temps sur la route si vos exigences changent ou si les choses ne vont pas comme prévu.
Cela devrait à l'astuce:
Cette approche fonctionnerait pour les valeurs positives et négatives de x:
Je trouve votre deuxième paragraphe d'être exceptionnellement déroutant. Pouvez-vous clarifier?
Vous voulez parler? ou augmenter au plafond du plus grand nombre significatif (comme compris avec 245 567 => 300 000)? Est-ce correct?
"Extraire le premier entier, ajoutez-lui 1 à ce sujet" - Qu'en est-il de (dire) 400? 4 + 1 = 5, avec des zéros, vous obtenez 500.