Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Como escrever um int com 2 casas?

Boa noite pessoal!

Estou utilizando uma variável do tipo int, mas eu gostaria que ela tivesse 2 casas.

Na verdade o projeto é na Unity, mas essa duvida é de C#, estou criando um cronometro que descresse, com horas minutos e segundos.

O cronometro tem o seguinte formato 00 : 00 : 00 , referente respectivamente a horas, minutos e segundos, porem quando eu converto de int, para string (com o método toString()) para associar ao cronometro, ele fica com o formato 0 : 0 : 0 , há alguma forma no C#, de eu forçar o int a ter 2 casas?

Eu sei que com um float, eu consigo força-lo a ter 2 casas decimais com ToString("F2");, há algo parecido para casas inteiras?

5 respostas
solução!

Heron, para formatar um int em X dígitos você coloca o número desejado de dígitos como zeros no formato do método ToString().

Exemplo: para formatar uma variável inteira idade com dois dígitos você faz: idade.ToString("00");

Experimenta aí e me fala se deu certo.

Abraço, Daniel.

Bom dia Heron, assim como "F2" você formata inteiros com a tag "D" e como quer mostrar duas casas "D2" e ainda pode fazer para moeda com "C" que pega a cultura do seu sistema operacional e formata para a moeda local, por exemplo $ em Inglês dos EUA e R$ em Portugues do Brasil.

Pode ver uma lista mais completa aqui

Com relação ao int consegui formata-lo, muito obrigado Daniel, ajudou muito mesmo :D

Eu testei o que você disse Marlon, mas não tive muito sucesso, com "F2" eu consigo colocar 2 casas decimais como supracitado, mas com "D2" tenho a mensagem no console: FormatException: The specified format 'D2' is invalid, também testei "C2" e tive sucesso. Será que eu estou utilizando de maneira incorreta?

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

public class Teste : MonoBehaviour {

    public Text text;
    public float tempo = 20f;

    private void FixedUpdate()
    {
        tempo -= Time.fixedDeltaTime;
        text.text = tempo.ToString("D2");
    }

}

Desde já, muito obrigado pela ajuda.

Fala Heron, Os especificadores de formato decimal ("D" ou "d") são compatíveis apenas com tipos int e sua variavel tempo é float. Neste caso pode continuar utilizando a solução do Prof Daniel ou alterar o tipo da variavel. Abraços.

Entendi, obrigado pela ajuda : )