Home > Back-end >  Kotlin. How to format decimal number with zero at the end?
Kotlin. How to format decimal number with zero at the end?

Time:12-03

I need to format the number.

I need the following result:

3434 -> 3 434

3434.34 -> 3 434.34

3434.3 -> 3 434.30

Here is my code:

  val formatter = DecimalFormat("#,###,##0.##")
            return formatter.format(value)

But I get a result like this:

3434 -> 3 434

3434.34 -> 3 434.34

3434.3 -> 3 434.3 // wrong!! expected 3 434.30

I need to add zero at the end if there is one digit after the decimal point.

Please help me how I can fix the problem?

CodePudding user response:

Example:

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.*;  

public class AddZeroToOneDigitDecimal{

     public static void main(String []args){
       System.out.println(customFormat(3434));
       System.out.println("----------");
       System.out.println(customFormat(3434.34));
       System.out.println("----------");
       System.out.println(customFormat(3434.3));
     }

     public static String customFormat(double d){

        String result =  formatter.format(d);
        return (result.replace(".00",""));
     }
     
     private static DecimalFormat formatter;
     private static final String DECIMAL_FORMAT = "#,###,##0.00";
     private static DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols(Locale.ENGLISH);
    
     static {
         formatSymbols.setDecimalSeparator('.');
         formatSymbols.setGroupingSeparator(' ');
         formatter = new DecimalFormat(DECIMAL_FORMAT, formatSymbols);
     }
}

Simplified

 val formatter = DecimalFormat("#,###,##0.00");
 return formatter.format(value).replace(".00","");

CodePudding user response:

Remove last two # after . and add 00 in place of ##.

val dec = DecimalFormat("#,###,##0.00") 
  • Related