Java中的双十进制格式

时间:2012-10-09 18:36:15

标签: java formatting double decimal

我在格式化double的小数时遇到了一些问题。如果我有双倍值,例如4.0,如何格式化小数,使其为4.00而不是?

14 个答案:

答案 0 :(得分:192)

其中一种方法是使用NumberFormat

NumberFormat formatter = new DecimalFormat("#0.00");     
System.out.println(formatter.format(4.0));

输出:

<强> 4.00

答案 1 :(得分:61)

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

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

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

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

    DecimalFormat formatter = new DecimalFormat("#0.00");
    double d = 4.0;
    System.out.println(formatter.format(d));

答案 2 :(得分:38)

使用String.format

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

答案 3 :(得分:17)

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

$52,000.00

注意逗号使其与@Vincent的回答不同

输出:

I = imread('image.tiff'); I.ReturnedColorSpace = 'YCbCr';

格式化的良好资源是主题上的official java页面

答案 4 :(得分:6)

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

例如:

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

System.out.printf("%.2f %n", 4.0); 

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

答案 5 :(得分:3)

new DecimalFormat("#0.00").format(4.0d);

答案 6 :(得分:3)

double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));

答案 7 :(得分:1)

另一种方法是使用setMinimumFractionDigits类中的NumberFormat方法。

此处您基本上指定了小数点后要显示的数字。

假设您的指定金额为2,那么4.0的输入会生成4.00

但是,如果您的Double输入包含的金额超过指定金额,则会采用指定的最小金额,然后再向上/向下添加一位数

例如,指定最小数量为2的4.15465454将生成4.155

NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));

Try it online

答案 8 :(得分:1)

您可以使用以下任何一种方法

  1. 如果您使用的是java.text.DecimalFormat

    DecimalFormat decimalFormat = NumberFormat.getCurrencyInstance(); 
    decimalFormat.setMinimumFractionDigits(2); 
    System.out.println(decimalFormat.format(4.0));
    

    OR

    DecimalFormat decimalFormat =  new DecimalFormat("#0.00"); 
    System.out.println(decimalFormat.format(4.0)); 
    
  2. 如果要将其转换为简单的字符串格式

    System.out.println(String.format("%.2f", 4.0)); 
    

以上所有代码将打印 4.00

答案 9 :(得分:0)

100%工作。

import java.text.DecimalFormat;

public class Formatting {

    public static void main(String[] args) {
        double value = 22.2323242434342;
        // or  value = Math.round(value*100) / 100.0;

        System.out.println("this is before formatting: "+value);
        DecimalFormat df = new DecimalFormat("####0.00");

        System.out.println("Value: " + df.format(value));
    }

}

答案 10 :(得分:0)

有很多方法可以做到这一点。那些在下面:

假设您的原始号码如下所示:

 double number = 2354548.235;

使用NumberFormat:

NumberFormat formatter = new DecimalFormat("#0.00");
    System.out.println(formatter.format(number));

使用String.format:

System.out.println(String.format("%,.2f", number));

使用DecimalFormat和模式:

NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
        DecimalFormat decimalFormatter = (DecimalFormat) nf;
        decimalFormatter.applyPattern("#,###,###.##");
        String fString = decimalFormatter.format(number);
        System.out.println(fString);

使用DecimalFormat和模式

DecimalFormat decimalFormat = new DecimalFormat("############.##");
        BigDecimal formattedOutput = new BigDecimal(decimalFormat.format(number));
        System.out.println(formattedOutput);

在所有情况下,输出将为: 2354548.23

注意

在四舍五入期间,您可以在格式器中添加RoundingMode。下面给出了一些舍入模式:

    decimalFormat.setRoundingMode(RoundingMode.CEILING);
    decimalFormat.setRoundingMode(RoundingMode.FLOOR);
    decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
    decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
    decimalFormat.setRoundingMode(RoundingMode.UP);

以下是进口

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

答案 11 :(得分:-2)

首先导入NumberFormat。然后添加:

NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

如果它处理货币,这会给你两个小数位并加上一个美元符号。

import java.text.NumberFormat;
public class Payroll 
{
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
    int hoursWorked = 80;
    double hourlyPay = 15.52;

    double grossPay = hoursWorked * hourlyPay;
    NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

    System.out.println("Your gross pay is " + currencyFormatter.format(grossPay));
    }

}

答案 12 :(得分:-3)

您可以按照以下方式执行此操作:

double d = 4.0;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));

答案 13 :(得分:-4)

我知道这是一个古老的主题,但是如果你真的想要使用句号而不是逗号,只需将结果保存为X,00就可以保存到字符串中,然后只需将其更改一段时间即可获得×.00

最简单的方法就是使用替换。

String var = "X,00";
String newVar = var.replace(",",".");

输出将是您想要的 X.00 。另外,为了方便起见,您可以一次完成所有操作并将其保存为双变量:

Double var = Double.parseDouble(("X,00").replace(",",".");

我知道这个回复现在没用,但也许有人会检查这个论坛会寻找这样的快速解决方案。