Page 1 sur 1

format d'affichage de string

Publié : 03 Oct 2020 17:47
par Kaloverian
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

Re: format d'affichage de string

Publié : 03 Oct 2020 23:16
par jmhoubre
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.

Re: format d'affichage de string

Publié : 04 Oct 2020 09:24
par Aelhan
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 ;)

Re: format d'affichage de string

Publié : 04 Oct 2020 11:35
par jmhoubre
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.

Re: format d'affichage de string

Publié : 07 Oct 2020 23:43
par jmhoubre
Si cela répond à ton problème, merci de clore le sujet.