Search code examples
javakotlinintegerdoubledecimalformat

Kotlin. How to format decimal number with zero at the end?


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?


Solution

  • 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","");