[Résolu] [DB-AL] Ecriture scientifique des (Très) Grands Nombres

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
Aelhan
Messages : 124
Inscription : 11 Déc 2019 23:00

[Résolu] [DB-AL] Ecriture scientifique des (Très) Grands Nombres

Message par Aelhan » 18 Déc 2019 19:14

Bonjour à tous,

Voilà enfin une question à laquelle je n'ai pas trouvé de réponse en parcourant cette mine qu'est le forum.

Mon "problème" est le suivant (ce n'est pas réellement un problème, car je peux le contourner) :
Lorsque je veux convertir de grands nombres en écriture scientifique, cela fonctionne parfaitement dans le code que je vous ai mis ci-dessous lorsque j'utilise des float à la place de double.
Mais ce que je ne comprends pas réellement, c'est que dans le code précisément noté tel que ci-dessous, il me renvoie l'erreur "cannot convert from 'double' to 'float'" au niveau de "grandnombre" (1ère ligne à l'intérieur de la condition) et au niveau de "exposant" (juste en dessous).
J'ai essayé d'écrire aussi comme ceci pour le forcer à voir double, mais ça ne change absolument rien :

Code : Tout sélectionner

if (grandNombre> 1000000.0)
Je ne suis pas du tout familier des valeurs de type double, et aie du mal à trouver des tutos qui expliquent vraiment comment s'en servir.
Du coup, si vous avez des liens qui pourraient m'aiguiller sur la manière de faire, je suis carrément preneur. En plus je suis sûr que c'est tout bête :/
Et si jamais vous me dites qu'il y a une syntaxe native en c# pour afficher l'écriture scientifique, j'hésiterai entre vous étrangler et vous embrasser ;)
D'avance, merci à vous !

Code : Tout sélectionner

using UnityEngine;
using UnityEngine.UI;

public class CalculDesGrandsNombres : MonoBehaviour
{
	public double grandNombre;
	public Text grandNombreUI;
	
	void Update
	{
	        if (grandNombre> 1000000)
	        {
 	           double exposant = (Mathf.Floor(Mathf.Log10(Mathf.Abs(grandNombre))));
 	           double mantisse = ((grandNombre) / Mathf.Pow(10, exposant));
 	           grandNombreUI.text = mantisse.ToString("F2") + "e" + exposant.ToString("F0");
	        }
	        else
	        {
	            grandNombreUI.text = grandNombre.ToString("F0");
	        }
	}
}

Edit de quelques secondes après avoir cliqué sur envoyé : C'est évidemment les résultats de "Mathf.xxx" qui renvoient un float, mais du coup, comment faire ? parce que si je cast grandNombre en float, je n'ai plus aucun intérêt à utiliser des double
Dernière édition par Aelhan le 18 Déc 2019 22:28, édité 1 fois.
Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie.

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Ecriture scientifique des (Très) Grands Nombres

Message par Max » 18 Déc 2019 19:28

Bonsoir,

Oui ton soucis est que tu passes par Unity.Mathf, qui ne sait bosser qu'avec des floats.
Pour jouer avec les Doubles, regarde du coté de Math Classe.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Aelhan
Messages : 124
Inscription : 11 Déc 2019 23:00

Re: [DB-AL] Ecriture scientifique des (Très) Grands Nombres

Message par Aelhan » 18 Déc 2019 19:30

Quand je disais que c'était tout bête, merci beaucoup je vais jeter un œil, et passerai le sujet en résolu quand c'est fait ;)
Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie.

Répondre

Revenir vers « (C#) CSharp »