107

Maybe this is a silly question, but I cannot guess how to solve it if it's not creating a method. Maybe there's a "natural way" to do it, like in C for example. Here's the problem:

I have a var:

double a;

And I want to show it only with 2 or 3 decimals. When I try to show it:

Text.setText("Value of a: " + String.valueOf(a));

It gives something like:

Value of a: 5.234966145

And i would want just

Value of a: 5.23

Without changing the real value of a so it shows the approximate number but works with the real number.

Mridang Agarwalla
  • 38,521
  • 65
  • 199
  • 353
ArcDare
  • 2,926
  • 4
  • 25
  • 38

6 Answers6

218
yourTextView.setText(String.format("Value of a: %.2f", a));
Louis CAD
  • 9,299
  • 2
  • 31
  • 50
Goz
  • 58,120
  • 22
  • 114
  • 192
  • This gives a warning: "Implicitly using the default locale is a common source of bugs: Use String.format(Locale, ...) instead" – AndreKR Jul 15 '20 at 11:22
  • @AndreKR that's because of variable symbols used in different countries. Even if you specify the correct formatting, you have to do the same if you parse it later. If you aren't doing that, it doesn't matter AT ALL because it uses the system settings of the device, which you should use anyway. – John Lord Feb 04 '21 at 17:59
44

You can use a DecimalFormat, or String.format("%.2f", a);

JJD
  • 44,755
  • 49
  • 183
  • 309
FunkTheMonk
  • 10,631
  • 1
  • 27
  • 37
38

For Displaying digit upto two decimal places there are two possibilities - 1) Firstly, you only want to display decimal digits if it's there. For example - i) 12.10 to be displayed as 12.1, ii) 12.00 to be displayed as 12. Then use-

DecimalFormat formater = new DecimalFormat("#.##"); 

2) Secondly, you want to display decimal digits irrespective of decimal present For example -i) 12.10 to be displayed as 12.10. ii) 12 to be displayed as 12.00.Then use-

DecimalFormat formater = new DecimalFormat("0.00"); 
Fenil
  • 1,024
  • 10
  • 10
34

Before you use DecimalFormat you need to use the following import or your code will not work:

import java.text.DecimalFormat;

The code for formatting is:

DecimalFormat precision = new DecimalFormat("0.00"); 
// dblVariable is a number variable and not a String in this case
txtTextField.setText(precision.format(dblVariable));
Mario Kutlev
  • 4,146
  • 5
  • 40
  • 57
M. A. Hatab
  • 341
  • 3
  • 3
21

use this one:

DecimalFormat form = new DecimalFormat("0.00");
etToll.setText(form.format(tvTotalAmount) );

Note: Data must be in decimal format (tvTotalAmount)

pRaNaY
  • 21,330
  • 22
  • 85
  • 134
Ravind Maurya
  • 2,489
  • 18
  • 27
6
textView2.setText(String.format("%.2f", result));

and

DecimalFormat form = new DecimalFormat("0.00");
         textView2.setText(form.format(result) );

...cause "NumberFormatException" error in locale for Europe because it sets result as comma instead of point decimal - error occurs when textView is added to number in editText. Both solutions are working excellent in locale US and UK.

Ranko1977
  • 71
  • 1
  • 4