format d'affichage de string

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
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

format d'affichage de string

Message par Kaloverian » 03 Oct 2020 17:47

bonjour,

Après avoir codé ceci:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class format_string : MonoBehaviour {
public Text speedText;
float vitesse,lola;

void Update() {



		print ("vitesse" + lola);

		speedText.text ="vitesse: "+lola.ToString("N")+ " km/h";
}

}

Ce script permet,grâce à ToString("N") d'afficher une vitesse comme ceci:
(une virgule dans la partie non décimale délimitant les tranches de 10¨3 et un point pour indiquer la partie décimale)
10000,47 -->10,000.47
1000000,47 -->1,000,000.47
mais malgré une recherche sur:
https://docs.microsoft.com/en-us/dotnet ... etcore-3.1
Je n'arrive à obtenir ce format (un point dans la partie non décimale délimitant les tranches de 10¨3 et une virgule pour indiquer la partie décimale)
10000,47-->10.000,47
1000000,47-->1.000.000,47

Que dois-je mettre dans la parenthèse à la place de N et que dois-je rajouter pour obtenir le résultat souhaité?

merci de votre aide

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: format d'affichage de string

Message par jmhoubre » 03 Oct 2020 23:16

En fait, cela fonctionne, mais tu as probablement un Windows avec des paramètres régionaux réglés sur FR.
Si ton utilisateur est US ou équivalent, cela s'affichera comme tu le désires pour lui. S'il est FR comme toi et moi, cela s'affiche avec le format usuel en FR : virgule pour la partie décimale et point pour les milliers.
Tu peux changer tes paramètres régionaux de FR vers US, mais cela s'appliquera à toutes tes applis, comme excel ou autres.

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

Re: format d'affichage de string

Message par Aelhan » 04 Oct 2020 09:24

Salut,

Sinon pour t'éviter de mettre ton PC en US, j'ai fait ce script qui permet d'afficher pour des grands nombres un format plus lisible,
En fait, il permet d'insérer un séparateur de milliers pour les nombres à partir de 1000 (dans mon cas, un espace) et d'afficher sous forme pseudo scientifique (avec un exposant modulo 3) pour les nombres supérieur à 1 million.
Je te le partage ici, n'hésites pas à le modifier à ta guise selon tes besoins !

Code : Tout sélectionner

public class GrandsNombres : MonoBehaviour
{
    private string converti;
    private double mantisse;
    private double milliers;
    private double reste;
    private string resteString;
    
    public string Conversion(double aConvertir, string decimales)
    {
        if (aConvertir >= 1000000)
        {
            double exposant = (Math.Floor(Math.Log10(aConvertir)/3));

            mantisse = ((aConvertir) / Math.Pow(10, exposant * 3));
            converti = mantisse.ToString("F2") + "e" + (exposant * 3).ToString("F0");
        }
        else
        {
            if (aConvertir >= 1000)
            {
                milliers = Math.Floor(aConvertir/1000);
                reste = aConvertir - 1000 * milliers;
                if (reste < 10)
                {
                    resteString = "00" + reste.ToString("F0"); 
                }else
                if (reste <100)
                {
                    resteString = "0" + reste.ToString("F0");
                }else
                {
                    resteString = reste.ToString("F0");
                }
                converti = milliers.ToString("F0") + " " + resteString;
            }else
            {
            converti = aConvertir.ToString(decimales);
            }
        }            
    return converti;
    }
}

Il y a certainement des parties un peu lourdes, du coup si certains ont des idées pour optimiser ça n'hésitez pas non plus hein ;)
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
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: format d'affichage de string

Message par jmhoubre » 04 Oct 2020 11:35

Bonjour,
dans la page de documentation que tu indiques, il y a la solution à ton problème, moyennant une courte adaptation à Unity.
Avec l'exemple fourni pour le specifier "N", et donc quelques adaptations, le float de valeur 16325.62901f est affiché en console comme ceci (2019.4.11) :
Image
Au-dessus, le format US, et dessous, le format français.
Ne pas oublier d'ajouter using System.Globalization.

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: format d'affichage de string

Message par jmhoubre » 07 Oct 2020 23:43

Si cela répond à ton problème, merci de clore le sujet.

Répondre

Revenir vers « (C#) CSharp »