62

In my printf, I need to use %f but I'm not sure how to truncate to 2 decimal places:

Example: getting

3.14159

to print as:

3.14

Arnaud
  • 6,869
  • 8
  • 49
  • 68
jmasterx
  • 50,457
  • 91
  • 295
  • 535

8 Answers8

109

Use this:

printf ("%.2f", 3.14159);
Kevin
  • 24,129
  • 18
  • 99
  • 155
16

You can use something like this:

printf("%.2f", number);

If you need to use the string for something other than printing out, use the NumberFormat class:

NumberFormat formatter = new DecimalFormatter("#.##");
String s = formatter.format(3.14159265); // Creates a string containing "3.14"
Alexis King
  • 41,872
  • 14
  • 128
  • 201
14
System.out.printf("%.2f", number);

BUT, this will round the number to the nearest decimal point you have mentioned.(As in your case you will get 3.14 since rounding 3.14159 to 2 decimal points will be 3.14)

Since the function printf will round the numbers the answers for some other numbers may look like this,

System.out.printf("%.2f", 3.14136); -> 3.14
System.out.printf("%.2f", 3.14536); -> 3.15
System.out.printf("%.2f", 3.14836); -> 3.15

If you just need to cutoff the decimal numbers and limit it to a k decimal numbers without rounding,

lets say k = 2.

System.out.printf("%.2f", 3.14136 - 0.005); -> 3.14
System.out.printf("%.2f", 3.14536 - 0.005); -> 3.14
System.out.printf("%.2f", 3.14836 - 0.005); -> 3.14
prime
  • 12,918
  • 12
  • 87
  • 123
4

Try:

printf("%.2f", 3.14159);

Reference:

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

Bill
  • 854
  • 6
  • 22
3

Use this

printf ("%.2f", 3.14159);
Jens Erat
  • 35,775
  • 16
  • 76
  • 95
Sibbs Gambling
  • 18,128
  • 38
  • 90
  • 168
3

as described in Formatter class, you need to declare precision. %.2f in your case.

Michał Šrajer
  • 28,842
  • 7
  • 57
  • 78
1

I suggest to learn it with printf because for many cases this will be sufficient for your needs and you won't need to create other objects.

double d = 3.14159;     
printf ("%.2f", d);

But if you need rounding please refer to this post

https://stackoverflow.com/a/153785/2815227

Community
  • 1
  • 1
mcvkr
  • 2,409
  • 6
  • 32
  • 58
1

You can try printf("%.2f", [double]);

Lior Ohana
  • 3,387
  • 4
  • 33
  • 48