2

我想根据需要在左右两侧用零格式化双精度。

double myVal = 12.456;

想要字符串"012.456000"

我试过了:

String.format("%03.06f", myVal);

和其他变体,但它似乎没有格式化小数位左侧的文本。

如果可能的话,我不想为此引入第三方库。

4

3 回答 3

5

使用java.text.DecimalFormat

double myVal = 12.456; 
DecimalFormat formatter = new DecimalFormat("000.000000");      
System.out.println(formatter.format(myVal));
于 2013-08-30T14:34:54.017 回答
0

这是 i18n(特定于语言环境)的方式:

double myVal = 12.456;
Locale locale = Locale.getDefault(); //replace this with actual locale
NumberFormat nf = NumberFormat.getNumberInstance(locale);
nf.setMinimumIntegerDigits(3);
nf.setMinimumFractionDigits(6);
System.out.println(nf.format(myVal)); //012.456000
于 2013-08-30T14:37:55.217 回答
0

我相信这就是您正在寻找的内容,使用十进制格式会在您正在格式化的内容的左侧和或右侧为您提供您想要的许多零。

import java.text.*;
public class leftsideformat
{

  public static void main(String[] args)
  {
    double myVal  =12.456;
    DecimalFormat leftside = new DecimalFormat("000.0000000000");
    System.out.println(leftside.format(myVal));
  }

}
于 2013-08-30T14:44:22.917 回答