How to remove decimal values from a value of type 'double' in Java

Java

Java Problem Overview


I am invoking a method called "calculateStampDuty", which will return the amount of stamp duty to be paid on a property. The percentage calculation works fine, and returns the correct value of "15000.0". However, I want to display the value to the front end user as just "15000", so just want to remove the decimal and any preceding values thereafter. How can this be done? My code is below:

float HouseValue = 150000;
double percentageValue;

percentageValue = calculateStampDuty(10, HouseValue);

private double calculateStampDuty(int PercentageIn, double HouseValueIn){
	double test = PercentageIn * HouseValueIn / 100;
	return test;
}

I have tried the following:

  • Creating a new string which will convert the double value to a string, as per below:

    String newValue = percentageValue.toString();

  • I have tried using the 'valueOf' method on the String object, as per below:

    String total2 = String.valueOf(percentageValue);

However, I just cannot get a value with no decimal places. Does anyone know in this example how you would get "15000" instead of "15000.0"?

Thanks

Java Solutions


Solution 1 - Java

Nice and simple. Add this snippet in whatever you're outputting to:

String.format("%.0f", percentageValue)

Solution 2 - Java

You can convert the double value into a int value. int x = (int) y where y is your double variable. Then, printing x does not give decimal places (15000 instead of 15000.0).

Solution 3 - Java

I did this to remove the decimal places from the double value

new DecimalFormat("#").format(100.0);

The output of the above is

> 100

Solution 4 - Java

You could use

String newValue = Integer.toString((int)percentageValue);

Or

String newValue = Double.toString(Math.floor(percentageValue));

Solution 5 - Java

You can convert double,float variables to integer in a single line of code using explicit type casting.

float x = 3.05
int y = (int) x;
System.out.println(y);

The output will be 3

Solution 6 - Java

I would try this:

String numWihoutDecimal = String.valueOf(percentageValue).split("\\.")[0];

I've tested this and it works so then it's just convert from this string to whatever type of number or whatever variable you want. You could do something like this.

int num = Integer.parseInt(String.valueOf(percentageValue).split("\\.")[0]);

Solution 7 - Java

Double d = 1000d;
System.out.println("Normal value :"+d);
System.out.println("Without decimal points :"+d.longValue());

Solution 8 - Java

Try this you will get a string from the format method.

DecimalFormat df = new DecimalFormat("##0");

df.format((Math.round(doubleValue * 100.0) / 100.0));

Solution 9 - Java

Use Math.Round(double);

I have used it myself. It actually rounds off the decimal places.

d = 19.82;
ans = Math.round(d);
System.out.println(ans);
// Output : 20 

d = 19.33;
ans = Math.round(d);
System.out.println(ans);
// Output : 19 

Hope it Helps :-)

Solution 10 - Java

the simple way to remove

new java.text.DecimalFormat("#").format(value)

Solution 11 - Java

With a cast. You're basically telling the compiler "I know that I'll lose information with this, but it's okay". And then you convert the casted integer into a string to display it.

String newValue = ((int) percentageValue).toString();

Solution 12 - Java

You can use DecimalFormat, but please also note that it is not a good idea to use double in these situations, rather use BigDecimal

Solution 13 - Java

String truncatedValue = String.format("%f", percentageValue).split("\\.")[0]; solves the purpose

The problem is two fold-

  1. To retain the integral (mathematical integer) part of the double. Hence can't typecast (int) percentageValue
  2. Truncate (and not round) the decimal part. Hence can't use String.format("%.0f", percentageValue) or new java.text.DecimalFormat("#").format(percentageValue) as both of these round the decimal part.

Solution 14 - Java

The solution is by using DecimalFormat class. This class provides a lot of functionality to format a number.
To get a double value as string with no decimals use the code below.

DecimalFormat decimalFormat = new DecimalFormat(".");
decimalFormat.setGroupingUsed(false);
decimalFormat.setDecimalSeparatorAlwaysShown(false);

String year = decimalFormat.format(32024.2345D);

Solution 15 - Java

Type casting to integer may create problem but even long type can not hold every bit of double after narrowing down to decimal places. If you know your values will never exceed Long.MAX_VALUE value, this might be a clean solution.

So use the following with the above known risk.

double mValue = 1234567890.123456;
long mStrippedValue = new Double(mValue).longValue();

Solution 16 - Java

Alternatively, you can use the method int integerValue = (int)Math.round(double a);

Solution 17 - Java

Double i = Double.parseDouble("String with double value");

Log.i(tag, "display double " + i);

try {
    NumberFormat nf = NumberFormat.getInstance();
    nf.setMaximumFractionDigits(0); // set as you need
    String myStringmax = nf.format(i);

    String result = myStringmax.replaceAll("[-+.^:,]", "");

    Double i = Double.parseDouble(result);

    int max = Integer.parseInt(result);
} catch (Exception e) {
    System.out.println("ex=" + e);
}

Solution 18 - Java

declare a double value and convert to long convert to string and formated to float the double value finally replace all the value like 123456789,0000 to 123456789

Double value = double value ;
Long longValue = value.longValue();  String strCellValue1 = new String(longValue.toString().format("%f",value).replaceAll("\\,?0*$", ""));

Solution 19 - Java

This should do the trick.

System.out.println(percentageValue.split("\.")[0]);

Solution 20 - Java

    public class RemoveDecimalPoint{

         public static void main(String []args){
            System.out.println(""+ removePoint(250022005.60));
         }
 
       public static String  removePoint(double number) {        
            long x = (long) number;
            return x+"";
        }

    }

Solution 21 - Java

Try:

String newValue = String.format("%d", (int)d);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSudhirView Question on Stackoverflow
Solution 1 - JavaChrisView Answer on Stackoverflow
Solution 2 - JavaC-OttoView Answer on Stackoverflow
Solution 3 - JavaAtul O HolicView Answer on Stackoverflow
Solution 4 - JavatckmnView Answer on Stackoverflow
Solution 5 - JavaGokul SreenivasanView Answer on Stackoverflow
Solution 6 - JavaederolloraView Answer on Stackoverflow
Solution 7 - JavaVishnu SureshView Answer on Stackoverflow
Solution 8 - JavaRaghavendraView Answer on Stackoverflow
Solution 9 - JavaIndradip paulView Answer on Stackoverflow
Solution 10 - JavaAla Eddine HmidiView Answer on Stackoverflow
Solution 11 - Javafederico-tView Answer on Stackoverflow
Solution 12 - JavasenseiwuView Answer on Stackoverflow
Solution 13 - Javaraghavsood33View Answer on Stackoverflow
Solution 14 - JavaGeorgios SyngouroglouView Answer on Stackoverflow
Solution 15 - JavaAjay Kumar MeherView Answer on Stackoverflow
Solution 16 - Javasaurabh kediaView Answer on Stackoverflow
Solution 17 - Javakoteswara D KView Answer on Stackoverflow
Solution 18 - JavaAla Eddine HmidiView Answer on Stackoverflow
Solution 19 - JavaJohn CollinsView Answer on Stackoverflow
Solution 20 - JavaRajkumar GondaliyaView Answer on Stackoverflow
Solution 21 - JavaJeff LoweryView Answer on Stackoverflow