显示 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.lang.NumberFormatException:无效的双精度:“”在 java.lang.StringToReal.invalidReal