Estoy tratando de convertir un valor entero clásico como:

2000

En un formato como este:

2.000,00

He intentado los siguientes métodos:

String.valueOf(input.format());

Y este método:

private String getCents(Decimal x){
    String y = String.valueOf(x);
    String z = '.';
    if(y.contains(',')) z = ',';
    y = y.substring(0, y.indexOf(z));
    if(x - Decimal.valueOf(y) == 0)
        return String.valueOf(x.format()) + z + '00';
    else return String.valueOf(x.format());
}

Pero la clase de cadena no contiene el método valueOf por alguna razón. Hay alguna otra manera de hacer esto ?

0
User987 14 dic. 2016 a las 17:57

2 respuestas

La mejor respuesta

La clase String no contiene el método valueOf, porque esto no es Java, sabes. El método que está buscando es ToString, que permite un proveedor de formato como argumento. La forma más sencilla es otra cadena que define el formato.

    int i = 2000;
    Console.WriteLine(i.ToString("#,##0.00"));
    Console.ReadLine();

Esto hará lo que quieras hacer. Obtenga más información sobre los proveedores de formato en la documentación del método ToString.

1
K. Berger 14 dic. 2016 a las 15:02

Dada la cultura en-EE. UU., esto hará:

string.Format(CultureInfo.GetCultureInfo("en-US"), "{0:N}", 2000)
1
Alexander Taran 14 dic. 2016 a las 15:02