显示 Java 双精度值

Posted

技术标签:

【中文标题】显示 Java 双精度值【英文标题】:displaying Java double value 【发布时间】:2015-04-01 17:04:36 【问题描述】:

这是一段 Java 代码:

 import java.util.*;

public class javaTests

    public static void main(String[] args)
    
        double decimal = 0.60;

        System.out.println(decimal);
    

我正在尝试打印 0.60,但编译器会打印 0.6。我怎样才能让它打印 0.60?谢谢!

【问题讨论】:

试试System.out.println(String.format( "%.2f", decimal ) ); 谢谢@singhakash,这非常有效!你能简单解释一下String.format 的作用吗? 查看java格式化程序类docs.oracle.com/javase/7/docs/api/index.html?java/util/…%[flags][width][.precision]conversion"。"用于填充,2 指定位数,f 为浮点数 @BjC 很抱歉回复晚了,您检查了docs。那里更好地解释了 Round double value to 2 decimal places的可能重复 【参考方案1】:
NumberFormat formatter = new DecimalFormat("#0.00");
double decimal = 0.60;
System.out.println(formatter.format(decimal));

【讨论】:

【参考方案2】:

你不能,你试图这样做的方式。 double 只存储一个数字,它不存储写入该数字的精度。您可以更改输出的格式(例如System.out.printf("%.2f", value),或者您可以将值存储在不同的数据类型中(例如BigDecimal,这确实可以区分),但双精度值0.6 没有区别和双精度值0.60

【讨论】:

【参考方案3】:

您还可以使用 String 类进行格式化。

System.out.println(String.format("%1.2f",.60));

format 方法接受多个参数。第一个参数始终是格式字符串,使用以下语法。

%[argument_index$][flags][width][.precision]conversion

Formatter的详细信息请参考java文档

http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax

【讨论】:

以上是关于显示 Java 双精度值的主要内容,如果未能解决你的问题,请参考以下文章

在java中将双精度值舍入为两位有效数字[重复]

以更易读的格式显示双精度科学记数法

Java Rest 发送双精度值

java.lang.NumberFormatException:无效的双精度:“”在 java.lang.StringToReal.invalidReal

在 C 代码的 printf 语句中使用时,不会显示浮点或双精度值

在 Boost ASIO 服务器和 Java 客户端之间通过 TCP 发送双精度