Java中的双十进制格式

Chr*_*fer 107 java double formatting decimal

我在格式化双精度小数时遇到了一些问题.如果我有一个双精度值,例如4.0,我如何格式化小数,使其为4.00?

kos*_*osa 206

其中一种方法是使用NumberFormat.

NumberFormat formatter = new DecimalFormat("#0.00");     
System.out.println(formatter.format(4.0));
Run Code Online (Sandbox Code Playgroud)

输出:

4.00

  • 你得到一个逗号,因为你的JVM使用了默认语言,这可能与Nambari的语言不同.看看NumberFormat javadoc:http://docs.oracle.com/javase/1.4.2/docs/api/java/text/NumberFormat.html (8认同)

Roh*_*ain 65

使用Java 8,您可以使用format方法..: -

System.out.format("%.2f", 4.0); // OR

System.out.printf("%.2f", 4.0); 
Run Code Online (Sandbox Code Playgroud)
  • f用于floating点值..
  • 2 十进制表示后,小数位后面的位数 .

对于大多数Java版本,您可以使用DecimalFormat: -

    DecimalFormat formatter = new DecimalFormat("#0.00");
    double d = 4.0;
    System.out.println(formatter.format(d));
Run Code Online (Sandbox Code Playgroud)


Vin*_*rat 40

使用String.format:

String.format("%.2f", 4.52135);

  • String.format还接受语言环作为第一个参数来计算小数符号格式. (7认同)
  • 要避免特定于语言环境的小数符号(例如逗号),请指定US语言环境:String.format(Locale.US,"%.2f",4.52135); (2认同)
  • 我会说"使用美国语言环境特定点作为小数点,指定美国语言环境"......这种想法认为美国习惯是正确的,其他一切都是"民间"的东西让我发疯. (2认同)

ojo*_*ifu 18

使用String.format,您可以这样做:

double price = 52000;
String.format("$%,.2f", price);
Run Code Online (Sandbox Code Playgroud)

注意这个逗号与@Vincent的答案不同

输出:

$52,000.00

格式化的良好资源是关于该主题的官方 Java页面


Lew*_*ins 6

您总是可以使用静态方法printf from System.out- 然后您将实现相应的格式化程序; 这节省了堆空间,其他示例要求您执行此操作.

例如:

System.out.format("%.4f %n", 4.0); 

System.out.printf("%.2f %n", 4.0); 
Run Code Online (Sandbox Code Playgroud)

保存堆空间这是一个相当大的好处,尽管如此我认为这个例子比任何其他答案都更易于管理,特别是因为大多数程序员都知道来自C的printf函数(尽管Java稍微改变了函数/方法).


Mic*_*ann 5

double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));
Run Code Online (Sandbox Code Playgroud)